2017-03-28 7 views
0

こんにちは私は2テーブル(ユーザーと投稿)と1対多のrealtionshipを持っています。laravel 5 2つのリレーショナルテーブルからすべての属性を雄弁で取り出します

私は従う

Usersテーブルとしてあるべき雄弁と結果によって1つのクエリ内のすべてのデータをretriveしたい: ID |名前

投稿: id | user_id |タイトル|ボディ

retrivedデータが

名である必要があります|タイトル|ボディ

+0

をお試しください!そのためには参加が必要で、参加の仕方によってはusers.idとposts.user_idの列を省略することは不可能です。 – devk

+0

はい、しかし、私は雄弁にすることができますどのように雄弁の力を使用する必要があります –

+0

どのようにモデルの結合機能を定義する方法については、1ライナークエリを持つことができます – ariestikto

答えて

1

Eager loadデータ:ビューで

$data = User::with('posts')->get(); 

@foreach ($user->posts as $post) 
    {{ $post->title }} 
@endforeach 

あなたはLaravelはDBに一つだけのクエリを作成したい意味ならば、あなたが持つすべての記事を取得することができます。

$posts = Post::where('user_id', $userId)->get(); 
+0

それは2つのクエリです。編集:nah彼は、まだそれを知っていない結合が必要です。 – devk

+0

@devk OPはただ1つを使いたいと思う。はい、このコードは2つのクエリを作成します。つまり、Eloquentの動作です。 –

+0

私はそれを知っています。彼は次のように言います:a)単一の問い合わせb)結果は 'name |タイトル|身体。関係のある条件のいずれかを満たしません。 – devk

0

MySQLで次のクエリを実行してみてください。それは動作するはずです。

select name,title,body from Users,Posts where Users.id=Posts.id group by Users.id 
1

これは宿題のようにひどくたくさんいるようだ。この

User::join("posts","posts.user_id","=","users.id")->get(); 
+0

しかしこれはクエリビルダー –

+0

ナンセンスを話す。これはあなたが探しているものです。 – devk

+0

これはクエリビルダーです。私は雄弁を使用したいです。 –