2017-08-29 13 views
2

私はEloquentとLaravelをMySQLで使用しています。
私は3つのテーブルPOSTS,USERSおよびCOMMENTSを持っています。マイPOSTCOMMENTは、私は特定のPOST IDlaravel eloquentネストされたSELECT文

$post = Post::where('id', $id)->get(); 
$comment = Post::find($id)->comment()->paginate(10);  
return view('posts\single', ['post' => $post, 'comments' => $comment]); 

のコメントの一覧を取得するには、次のコードでこのように1対多の関係にある今、私はUSERテーブルから各ユーザーの詳細を取得したいです。私はforeach()を使用し、すべての単一の詳細を取得したくないID。 1回の呼び出しでユーザーの詳細(USERテーブル)を含むすべてのコメント(COMMENTSテーブル)を取得できる方法はありますか?

+0

'JOIN'を使用していますか? https://www.w3schools.com/sql/sql_join.asp – Markinson

+0

あなたは雄弁な関係を使用する必要があります.. –

答えて

0

まず、コメントとコメントの間に1対多の関係を作成する必要があります。

あなたは既に関係があります投稿は多くのコメント関係を持っています。

ので、

  • $post->commentsはあなたに特定のポストのためのすべてのコメントを与えるだろう....のは、ブレード・ファイルになりました

    $post = Post::where('id', $id)->with('comments.user')->get(); 
    return view('posts\single', ['post' => $post]); 
    

    入れ子になった積極的なロードを使用してみましょう。

  • $post->comments->userあなたにコメントしたユーザーが表示されます。
+0

よく説明されています!ありがとう、多くのMaulik。魅力のように働いた –

+0

ウェルカム:)下矢印の下のチェックボタンをクリックして答えをマークする必要があります。 –

0

これは動作するはずです。次のように試してください:

+0

残念ながら、キーユーザーでNULLを "user" => NULLとして返すことになりました –

+0

接続が紛失していました。うまくいきました ありがとうございました –

0

これを試してみてください -

User::join('posts','posts.created_by','=','users.id') 
     ->with('comment') 
     ->where('posts.id' ,'=' ,$id) 
     ->paginate(10); 

希望あなたのために役立つ、この意志。

関連する問題