2017-08-07 65 views
0

我想獲取一篇文章及其關聯圖像。我的查詢返回結果如下:使用laravel查詢構建器返回一個關聯數組

查詢

$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); 

輸出

enter image description here

我想與帖子相關聯的所有圖像填充作爲單個集合的關聯數組/結果。例如對於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

嘗試添加' - > GROUPBY( 'posts.id') - > GET ();'並參見 – Maraboc

+0

你使用雄辯的模型和關係嗎? – iArcadia

+0

在複雜查詢的情況下,我更喜歡查詢構建器。這裏我沒有使用模型。 @iArcadia – WahidSherief

回答

-3

試試這個:

使用->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); 
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); 
+0

謝謝@ Maraboc它只顯示一個結果。不是別人:( – WahidSherief

+0

別人?你的意思是一個圖像? – Maraboc

相關問題