我有这个select,但我不知道如何只获取事件不为空的寄存器:
$getUsers = User::where('user_id', $userId)
->with(['events' => function($query) {
$query->where('finnish', 0)
->orderBy('event_id', 'desc');
}])
->get();通过这个查询,我得到了这个结果,其中用户还没有满足关系的where条件:
{
"events": [
{
"user_id": 1,
"event_id": 1,
"created_at": null,
"updated_at": null,
"events": {
"event_id": 1,
"name": "test 1"
}
},
{
"user_id": 1,
"event_id": 25,
"created_at": null,
"updated_at": null,
"events": null
},
{
"user_id": 1,
"event_id": 34,
"created_at": null,
"updated_at": null,
"events": null
}
]
}我只喜欢这样:
{
"events": [
{
"user_id": 1,
"event_id": 1,
"created_at": null,
"updated_at": null,
"events": {
"event_id": 1,
"name": "test 1"
}
]
}谢谢
发布于 2019-12-18 15:04:16
您可以使用->has('events')查询relationship existence。
如果你想要额外的过滤器,这里有whereHas。
$getUsers = User::where('user_id', $userId)
->whereHas('events', function function($query) {
$query->where('finnish', 0);
}
->with(['events' => function($query) {
$query->where('finnish', 0)
->orderBy('event_id', 'desc');
}])
->get();https://stackoverflow.com/questions/59386917
复制相似问题