我想仅在{10}次旅行时选择user
,trip
必须行走leg
。
表格结构
// users
(int) id
// trips
(int) id
(fk) user_id
// legs
(int) id
(fk) trip_id
(str) mode
模型
class User extends Model
{
public function trips()
{
return $this->hasMany(Trip::class);
}
}
class Trip extends Model
{
public function legs()
{
return $this->hasMany(Leg::class);
}
}
我可以返回有行走的旅行的用户......
$user = User::where('id', '=', 1)
->whereHas('trips', function($query) {
->query('legs', function($query) {
$query->whereHas('mode', '=', 'walking');
});
})
->first();
...似乎can be done使用groupBy()
和havingRaw('COUNT(*) > 10')
......
$query = User::whereHas('trips', function ($query) {
$query
->whereHas('legs', function ($query) {
$query->where('mode', '=', 'walking');
})
->groupBy('id')
->havingRaw('COUNT(*) > 10');
});
......但这就是我被困住的地方。
非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
这样做
<p id="pw"></p>
<button id="button-clicker">click</button>
$user = User::where('id', 1)
->whereHas('trips', function($query) {
$query->whereHas('legs', function ($query) {
$query->where('mode', 'walking');
});
}, '>', 10)
->first();
就像whereHas
一样,带有条件闭包。
has