2016-08-14 2 views
4

У меня есть модель, в которой мне нужно проверить значения и вернуть нездоровый статус. Я создал Accessor, который работает и возвращает true или false, как ожидалось.Laravel 5.2 Eloquent - Accessor through Scope

$task->unhealthy() 

Accessor код

public function getUnhealthyAttribute(){ 

     //Is in Active status 
     if ($this->status_id == 1){ 
      return true; 
     } 

     //Has overdue items 
     if ($this->items()->overdue()->count() > 0) { 
      return true; 
     } 

     return false; 
    } 

теперь у меня есть требование, чтобы восстановить коллекцию всех "нездоровых" Задачи.

Вопрос: Можно ли использовать мой Аксессор с областью? Каким будет правильный подход?

+0

* возможно * - вы пробовали это? Я бы предположил, что это возможно, но ради 2-минутной работы вы бы знали. Если это не так, то написать свой собственный объем для этого будет относительно легко. – James

ответ

1

Вы можете использовать collection's filter() method фильтровать только нездоровых задач, как только у вас есть коллекция с всеми задач:

$unhealthy_tasks = $tasks->filter(function($task, $key) { 
    return $task->unhealthy; // if returns true, will be in $unhealthy_tasks 
});