Friday, March 17, 2017

Laravel: Find all posts made by a user using name field

I want to fetch all posts made by a user by matching the name of the user from the route url using Eloquent
My User.php has relationship as follows

public function posts() {
    return $this->hasMany('App\Post');
}

My Post.php model has following relationship:

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

my route is like following:

Route::get('/users/{name}', 'UsersController@show');

I know if I want to fetch all posts by a user I need to do something like this

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

but I want to find the user based on the name field in the database and not the id
I cant use ->posts() if I use where like Users::where('name', $name)->posts()->get(); , It throws error.
How do I fetch all posts of a user by matching his name in database with eloquent



via Vivek Padhye

Advertisement