2017-08-07 5 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

私はポストに関連付けられているすべての画像は、単一のコレクションの連想配列として移入したいです/結果。たとえば上記の2つの結果ではなくID 38の場合、次のようになります。

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

Eloquentモデルと関係を使用していますか? – 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それは1つの結果しか表示されません。他の人はいません:( – WahidSherief

+0

他の人は?あなたは1つのイメージを意味しますか? – Maraboc

関連する問題