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>';
}
我不知道我在这里做错了什么但是这段代码
$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>';
}