Php 如何让Laravel Join返回这样的数据?
如何使用leftJoin或rightJoin的join从这样的数据库返回数据Php 如何让Laravel Join返回这样的数据?,php,postgresql,laravel,Php,Postgresql,Laravel,如何使用leftJoin或rightJoin的join从这样的数据库返回数据 { "users": [{ "id": 129, "name": Daniel, "messages": [{ "message_id":1, "user_id": 120, "subject": "some text A", "message": "Some text message A" },{ "mes
{
"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
}
这是我通常使用的:
$users = DB::table('users')
->leftJoin('messages', function ($join) {
$join->on('users.id', '=', 'messages.user_id');
})
->get();
我得到的数据不是我想要的,所以请让我知道最好的方法是什么。
谢谢你的帮助。谢谢好吧,join query不会返回数据之类的结果-它只能获取平面数据或限制查询结果。您应该在
用户
模型中添加如下关系方法:
public function messages()
{
return $this->hasMany(Messages::class, 'user_id');
}
$users = User::with('messages')
->get();
然后像这样重新编辑查询方法链:
public function messages()
{
return $this->hasMany(Messages::class, 'user_id');
}
$users = User::with('messages')
->get();
其中,User
model方法中的with
将生成相关表的即时加载约束查询,并将消息的模型的集合带到每个用户的模型