Mar*_*tan 3 php postgresql laravel
我如何使用 leftJoin 或 rightJoin 的连接从这样的数据库中获取返回的数据?
{
"users": [{
"id": 129,
"name": Daniel,
"messages": [{
"message_id":1,
"user_id": 120,
"subject": "some text A",
"message": "Some text message A"
},{
"message_id":2,
"user_id": 120,
"subject": "some text",
"message": "Some text message S"
},{
"message_id":3,
"user_id": 120,
"subject": "some text",
"message": "Some text message S"
}],
}, {
"id": 2,
"user_id": 120,
"name": "Emmy",
"messages":[{
"message_id":25,
"user_id": 120,
"subject": "some text C",
"message": "Some text message C"
}]
}],
"count": 2
}
Run Code Online (Sandbox Code Playgroud)
这是我通常使用的:
$users = DB::table('users')
->leftJoin('messages', function ($join) {
$join->on('users.id', '=', 'messages.user_id');
})
->get();
Run Code Online (Sandbox Code Playgroud)
我得到的数据不是我想要的,所以请告诉我什么是最好的方法。任何帮助表示赞赏。谢谢
那么,join 查询不会返回诸如数据之类的 - 它只能获取平面数据或限制查询结果。您应该像这样在User模型中添加一个关系方法:
public function messages()
{
return $this->hasMany(Messages::class, 'user_id');
}
Run Code Online (Sandbox Code Playgroud)
然后像这样重新编辑查询方法链:
$users = User::with('messages')
->get();
Run Code Online (Sandbox Code Playgroud)
其中,with从User模型的方法会产生相关的表和意志渴望负荷contraint查询带给你一个Collection模型的Message模型,每个User模型。
| 归档时间: |
|
| 查看次数: |
823 次 |
| 最近记录: |