は、私は次のようになりましたユーザーのための2つのロール:オーナー&ガーデナーLaravel:belongsToMany関係の結合カウントクエリを書くには?</p> <ul> <li>ユーザー、役割、ROLE_USERピボットテーブルとbelongsToMany 関係</li> <li>ユーザー、場所で、location_userピボットテーブルと</li> </ul> <p>がありますbelongsToManyの関係で:
ロケーションには '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句を行うことができますし、私は方法を見つけることができませんので、参加するクエリを作成したいと思います。どんな助けでも大歓迎です!
重要:
私は結果を得るために、フィルタ()メソッドを知っているが、私はここに
のおかげのようなすべての場所を取得しますが、私は本当に(と理解)する必要があります私はちょうど編集したとして、この
のようなあなたの場所のモデルにスコープを作ることができますどのように結合クエリを書く – sebap