#laravel
#laravel
Вопрос:
У меня есть приложение laravel, в котором я пытаюсь отобразить все сообщения от всех пользователей на главной индексной странице. Однако у меня возникают проблемы при попытке запросить все сообщения от всех пользователей. приведенный ниже код получает только все сообщения от первого пользователя.
Вот запрос
//grab all users from the database and store it in the users variable
$users = User::all();
//grab all posts from all users. list by most recent in descending order store in recentPosts variable
$recentPosts = Post::whereIn('user_id', $users)->paginate(32);
//return the view with the varibles
return view('index', compact('recentPosts'));
Вот dd($users);
Вот dd($recentPosts);
вот моя база данных с 2 сообщениями от 2 отдельных пользователей
Ответ №1:
$users
это коллекция, а не массив. Вам нужно получить массив для использования whereIn
. Может быть, вы можете использовать метод pluck:
$recentPosts = Post::whereIn('user_id', $users->pluck('id'))->paginate(32);
Комментарии:
1. @OMR Да, вы правы, но его можно использовать в Where. потому что это IlluminateSupport Collection, который возвращает значение, подобное array.
Ответ №2:
исправьте этот whereIn()
массив запросов, чтобы вы могли использовать эту ссылку https://laravel.com/docs/8.x/queries#where-clauses
и pluck()
чтобы получить все userId
https://laravel.com/docs/8.x/collections#method-pluck
$userIds = User::all()->pluck('id')->toArray();
//grab all posts from all users. list by most recent in descending order store in recentPosts variable
$recentPosts = Post::whereIn('user_id', $userIds)->paginate(32);