Laravel 5.1 预加载无法在何处执行其他操作

Laravel 5.1 Eager Loading Cannot do additional where

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

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

它returns 0 但是当我检查集合时它不是 0。你们知道为什么这段代码不起作用吗?谢谢大家。

您需要从 ->relationship->where('status', 'somestatus') 中删除 '='(中间参数)。因为你是在集合 it only takes 2 parameters.

上做的

像这样:

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