2017-03-17 24 views
1

を使用して、ユーザーによって行われたすべての記事は、私がLaravel:名前フィールド

を次のように雄弁
マイUser.phpが関係を持って使用して、ルートURLからユーザーの nameを照合することによって、ユーザによって行われたすべての記事を取得したい検索

public function user() { 
    return $this->belongsTo('App\User'); 
} 

私のルートは、次のようなものです::

Route::get('/users/{name}', '[email protected]'); 
public function posts() { 
    return $this->hasMany('App\Post'); 
} 

マイPost.phpモデルは次のような関係を持っています

私はこの

public function show($name) { 
    $user = User::find(1); 
    $posts = $users->posts()->get(); 
    return view('users.show', compact('posts')); 
} 

のような何かをする必要があり、ユーザのすべての記事を取得したい場合、私は知っているが、私はいないID
を、データベース内の名前フィールドに基づいてユーザーを見つけたいと私がwhereを​​のように使用すると、->posts()を使用するとエラーになります。

$posts = Post::whereHas('user', function($q) use($name) { 
    $q->where('name', $name); 
})->get(); 

それともあなたがこれを行うことができます:

User::where('name', $name)->first()->posts()->get(); 

するか、私はあなたがwhereHas()を使用することができ雄弁

答えて

3

でデータベースに彼の名前を照合することによって、ユーザのすべての投稿を取得するにはどうすればよい

$user = User::where('name', $name)->first(); 
$posts = Post::where('user_id', $user->id)->get(); 

これらのオプションはすべて2つのクエリを作成します。

+1

オハイオ州、私はどこに '最初の' mothodを連鎖する必要があります。それは欠けていた。どうもありがとうございます。 –

関連する問題