仅当数据透视属性为 null 时才通过 manyToMany 计算相关模型 - Laravel
Counting Models related through manyToMany only if a pivot attribute null - Laravel
我正在详细说明此处获得的代码
我想要的:
我想收集与任何每周 Routine
相关的 Activities
。枢轴 table 的属性 done_at
告诉我任何 activity(任务)何时完成。
我可以在多对多关系中列出和稍后 ->count()
与父模型相关的活动:
public function activities()
{
return $this->belongsToMany('App\Models\Activity', 'activity_routine', 'routine_id', 'activity_id')->withPivot('done_at')->withTimestamps();
}
现在我想获取尚未完成的活动集合。它们的主元属性 done_at
设置为 null
。
我的尝试:
我希望下面的代码有效。不幸的是它没有。
我收到错误 Illegal operator
。当我简单地输入 '='
而不是 '!='
时,代码就像梦一样工作,但它给了我已经完成的活动列表。
有什么提示吗?
public function activitiesOnlyDone()
{
return $this->belongsToMany('App\Models\Activity')->withPivot('done_at')->wherePivot('done_at','!=',null);
}
其他提示:
getting the value of an extra pivot table column laravel
我相信在这种情况下,您可以替换
->wherePivot('done_at','!=',null);
简单
->whereNull('done_at');
如果其他表上有 done_at
列,您将必须这样做
->whereNull('activity_routine.done_at');
这是有效的,因为关系 class 使用 Laravel 的查询构建器来构造最终的数据库查询。任何在关系 class 中未定义的关系上调用的方法都将通过 __call()
方法传递给查询构建器 (Illuminate\Database\Query\Builder)。
我正在详细说明此处获得的代码
我想要的:
我想收集与任何每周 Routine
相关的 Activities
。枢轴 table 的属性 done_at
告诉我任何 activity(任务)何时完成。
我可以在多对多关系中列出和稍后 ->count()
与父模型相关的活动:
public function activities()
{
return $this->belongsToMany('App\Models\Activity', 'activity_routine', 'routine_id', 'activity_id')->withPivot('done_at')->withTimestamps();
}
现在我想获取尚未完成的活动集合。它们的主元属性 done_at
设置为 null
。
我的尝试:
我希望下面的代码有效。不幸的是它没有。
我收到错误 Illegal operator
。当我简单地输入 '='
而不是 '!='
时,代码就像梦一样工作,但它给了我已经完成的活动列表。
有什么提示吗?
public function activitiesOnlyDone()
{
return $this->belongsToMany('App\Models\Activity')->withPivot('done_at')->wherePivot('done_at','!=',null);
}
其他提示: getting the value of an extra pivot table column laravel
我相信在这种情况下,您可以替换
->wherePivot('done_at','!=',null);
简单
->whereNull('done_at');
如果其他表上有 done_at
列,您将必须这样做
->whereNull('activity_routine.done_at');
这是有效的,因为关系 class 使用 Laravel 的查询构建器来构造最终的数据库查询。任何在关系 class 中未定义的关系上调用的方法都将通过 __call()
方法传递给查询构建器 (Illuminate\Database\Query\Builder)。