Выводит только одно значение из БД
Подскажите, я делаю запрос к БД, чтобы получить id пользователей к которым были отправлены сообщения, но вместо двух id из бд, я получаю только один.
$users_open_chat = DB::table('message')
->where('id_user_from','=',Auth::user()->id) //тут указываю "получить список сообщений с id равное id авторизованного пользователя"
->groupBy('id_user_to') // группирую все одинаковые id пользователей к которым были отправлены сообщения
->get();
foreach ($users_open_chat as $key => $row) {
$users_all = $row->id_user_to; //тут должно вывестись числа 3 и 4 (т.е. те люди к которым были отправлены сообщения)
$ids = explode(',', $users_all);
$users = DB::table('users')
->whereIn('id', [$ids]) //вывожу список пользователей
->get();
}
Ответы (1 шт):
Автор решения: Sanya H
→ Ссылка
Если брать Ваш код, то это должно выглядеть так:
$ids = DB::table('message')
->where('id_user_from', Auth::id())
->groupBy('id_user_to')
->get()
//создаем массив ids
->pluck('id_user_to');
$users = DB::table('users')
->whereIn('id', [$ids])
->get();
Можно проще
$users = DB::table('message')
->select('users.*')
->join('users','id','=','id_user_to')
->where('id_user_from', Auth::id())
->groupBy('id_user_to')
->get();