![](/img/trans.png)
[英]How to use PHP Laravel Eloquent groupBy and sum method with two related models?
[英]How to use Laravel Eloquent to query a minimum number of related models using groupBy and havingRaw
我只想选择一个user
如果他们有10个以上的行程,且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();
......它似乎是它可以 被 做使用groupBy()
和havingRaw('COUNT(*) > 10')
...
$query = User::whereHas('trips', function ($query) {
$query
->whereHas('legs', function ($query) {
$query->where('mode', '=', 'walking');
})
->groupBy('id')
->havingRaw('COUNT(*) > 10');
});
...但是这就是我被困住的地方。
任何帮助,不胜感激,谢谢!
做这个
$user = User::where('id', 1)
->whereHas('trips', function($query) {
$query->whereHas('legs', function ($query) {
$query->where('mode', 'walking');
});
}, '>', 10)
->first();
whereHas
工作就像has
与条件收敛。
public function whereHas($relation, Closure $callback = null, $operator = '>=', $count = 1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.