список пользователей laravel с постами и ссылками на профили

Я пытаюсь получить список всех пользователей с постом и связать их с другой страницей, где перечислены все их посты.

Очевидно, что сначала я должен сделать свою страницу списка, а затем страницу с подробностями о моих пользователях, но кое-как я в итоге оказался со страницей подробностей и без страницы списка :)))

Во всяком случае, это то, что я до сих пор

Controller

public function chef() {
//
return view('front.chef');
}

public function chefdetail($username) {
$foods = Food::whereHas('user', function($q) use($username){
$q->where('username',$username);
})->get();
return view('front.chef-detail', compact('foods'));
}

Мои маршруты:

Route::get('/chef/{username}', 'FrontendController@chefdetail')->name('chefdetail');
Route::get('/chefs', 'FrontendController@chef')->name('chefs');

Вопросы (проблемы):

  1. Как получить список пользователей с сообщениями в моем chef функционировать?
  2. Как мне добавить username на страницу с подробным описанием моего повара

Это правильно, что я использовал $user = User::find(1); получить список пользователей? потому что я не мог получить пользователей по идентификатору, он возвращает ошибку.

0

Решение

С помощью этого кода вы передаете всех своих пользователей, у которых есть сообщения, на страницу блейда

public function chef() {
$users = User::has('posts')->get();
return view('front.chef', compact("users"));
}

В вашем клинке вы можете показать их как:

@foreach ($users as $user) {
<a href="{{ route("chefdetail",$user->username) }}">{{ $user->username }}</a>
@endforeach

тогда ваша функция chefdetail должна выглядеть так:

public function chefdetail($username) {
$user = User::where("username", $username)->with("posts")->first();
return view('front.chef-detail', compact('user'));
}

и вы можете показать пост, как это:

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

надеюсь, это поможет вам.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector