2017-10-22 7 views
1

私は3つのモデルUserReviewProductを持っています。製品はUserモデルとhasManyの関係にあります。 Userモデルは、ReviewモデルとhasOneの関係にあります。熱心なローディングを使用して3番目のテーブルからコラムを選択してください

ProductReviewモデルとの間には関係がありません。私はユーザーがいる製品を選択しようとしており、そのユーザーの評価をレビューモデルから選択したいと考えています。ここに私のコードは何をしようとしています..

$product=new Product; 
$product->where('status', 1) 
      ->with(array('user'=>function($query){ 
       $res=$query->select('id', 'userName', 'profilePic','firstName', 'lastName'); 
       /*$rating=Review::where('user_id',$res->id);*/ this doesn't work but may be I need something similar? 
      })) 
      ->with('cocabeanconditioning') 
      ->with('Image') 
      ->orderBy('created_at', 'desc') 
      ->paginate(9); 

ありがとう。例えば

答えて

1

使用dot notation、:

->with('user', 'user.review') 
+0

ニース。しかし、どのようにすべてのコルムを返す代わりに、1つまたは2つのコラムだけを取得できますか? – sadek

+1

@sadek私の答えでリンクをクリックし、少し下にスクロールし、 'Eager Loading特定の列'セクションを読んでください。 –

0

あなたはこのような関係のために特定の列を選択することができます。

$products = Product::with(['user'=>function($q){ 
      $q->select('users.id')->with(['review'=>function($q){ 
       $q->select('reviews.rating'); 
      }]); 
     }])->get(); 
関連する問題