Laravel 5.2 Eloquent - 通过范围访问器

时间:2016-08-14 23:53:39

标签: laravel scope eloquent accessor

我有一个模型,我需要检查值并返回一个不健康的状态。我创建了一个Accessor,它正在工作并按预期返回true或false。

$task->unhealthy()

访问者代码

    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;
    }

我现在要求检索所有"不健康"的集合。任务。

问题:是否可以将我的Accessor与范围一起使用?什么是正确的方法?

1 个答案:

答案 0 :(得分:1)

一旦拥有所有任务的集合,您就可以使用collection's filter() method仅过滤运行状况不佳任务:

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