我想要获取帖子及其关联图片。我的查询返回结果如下:
查询
$result = DB::table('posts')
->join('users', 'users.id', '=', 'posts.user_id')
->join('post_images', 'post_images.post_id', '=', 'posts.id')
->select('users.name', 'posts.*', 'post_images.image')
->where([
'users.id' => 1,
'posts.id' => 38
])
->get();
dd($result);
输出
我希望与帖子相关联的所有图像都填充为单个集合/结果的关联数组。例如,对于ID 38而不是2结果如上图所示,我需要如下:
array:49 [▼
0 => {#205 ▼
+"name": "wahid"
+"id": 38
+"user_id": 1
+"categories_id": 1
+"body": "something !!"
+"color": "LightGreen"
+"mood": "Loved"
+"created_at": "2017-08-07 01:15:48"
+"updated_at": "2017-08-07 01:15:48"
+"images" => array:3 [
0 => 'image1.jpg'
1 => 'image2.jpg'
2 => 'image3.jpg'
]
}
感谢您的帮助。
答案 0 :(得分:0)
尝试按帖子ID分组:
$result = DB::table('posts')
->join('users', 'users.id', '=', 'posts.user_id')
->join('post_images', 'post_images.post_id', '=', 'posts.id')
->select('users.name', 'posts.*', 'post_images.image')
->where([
'users.id' => 1,
'posts.id' => 38
])
->groupBy('posts.id')
->get();
dd($result);
答案 1 :(得分:-4)
试试这个:
使用->get()->toArray();
$result = DB::table('posts')
->join('users', 'users.id', '=', 'posts.user_id')
->join('post_images', 'post_images.post_id', '=', 'posts.id')
->select('users.name', 'posts.*', 'post_images.image')
->where([
'users.id' => 1,
'posts.id' => 38
])
->get()->toArray();
dd($result);