Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何让Laravel Join返回这样的数据?_Php_Postgresql_Laravel - Fatal编程技术网

Php 如何让Laravel 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

如何使用leftJoin或rightJoin的join从这样的数据库返回数据

{
"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
将生成相关表的即时加载约束查询,并将
消息的
模型的
集合带到每个
用户的
模型