【发布时间】:2017-09-29 19:59:48
【问题描述】:
我得到了以下信息:
- User、Role,带有一个 role_user 数据透视表和一个 belongsToMany 关系
- 用户,位置,具有 location_user 数据透视表和 belongsToMany 关系
用户有 2 个角色:所有者和园丁
位置有一个“gardeners_max”字段
在模型位置:
protected $appends = ['is_full'];
public function getIsFullAttribute()
{
return $this->attributes['name'] = $this->remainingGardeners() <= 0;
}
public function countGardeners()
{
return $this->gardeners()->count();
}
public function remainingGardeners()
{
return $this->gardeners_max - $this->countGardeners();
}
现在,这样做:
Location::all();
我明白了:
[
{
name: 'LocationA',
gardeners_max: 3,
owners: [...],
garderners: [...]
...
is_full: false
}
]
这很酷。但是...不可能对附加属性执行 WHERE 子句。
Location::where('is_full',true)->get() // Unknown column 'is_full' in 'where clause'
所以我想写一个连接查询,这样我就可以在 is_full 上做一个 where 子句
我就是找不到路。任何帮助将不胜感激!
重要提示:
我知道获取结果的 filter() 方法,但我需要在这里执行一个 scopeQuery
【问题讨论】:
标签: laravel eloquent query-builder