Laravel 5.1 Eager Loading不能在其他地方做

时间:2017-06-20 15:20:48

标签: php laravel eloquent laravel-5.1 eager-loading

我不知道我在这里做错了什么,但是这段代码

$models = Model::with(['relationship' => function ($query) {
        $query->whereBetween('date', [$this->today->copy()->startOfDay(), $this->today->copy()->endOfDay()]);
    }])->where('status', 'active')->where('position', '!=', 'dev')->where('status', '=', 'good')->get();

没有按预期工作。它确实加载了它在对象中存在的关系,但问题是我不能做这样的事情

foreach($models as $model)
    {
        echo $model->relationship->where('status', '=', 'somestatus')->count() . '<br>';
    }

它返回0但是当我签入集合时它不是0.你们知道为什么这段代码不起作用?谢谢你们。

1 个答案:

答案 0 :(得分:1)

您需要从'='中删除->relationship->where('status', 'somestatus')(中间参数)。由于您是在集合it only takes 2 parameters上进行的。

所以这样:

foreach($models as $model)
{
    echo $model->relationship->where('status', 'somestatus')->count() . '<br>';
}