Laravel Eloquent не работает должным образом - PullRequest
0 голосов
/ 23 мая 2018

В настоящее время я создаю базовую систему личных сообщений в Laravel.В моей базе данных у меня есть таблица сообщений.Два столбца являются «sender_id» и «receient_id».

То, что я пытаюсь сделать, - это использовать eloquent для просмотра этой таблицы и перечисления в папке «Входящие» всех случаев, когда в этих столбцах указан текущий зарегистрированный идентификатор пользователя.Затем я буду использовать «отличный», чтобы игнорировать повторяющиеся записи, чтобы пользователь был указан только один раз.Используя этот идентификатор, я могу отобразить имя пользователя получателя, чтобы, когда пользователь нажимает на имя пользователя, оно передавало их в ветку сообщений для этого пользователя.

Ради тестирования я только сейчас извлекаю столбец "receient_id" и выводю его в блейд.Вот строка, которая, я считаю, должна выводить получателя только один раз, несмотря на то, что его много раз встречали в таблице.

MessageController

$messages = Message::where('recipient_id', $user)->distinct('recipient_id')->get();

Однако в блейде один и тот же пользователь выводится дважды (так как у них найдено 2 сообщения), когда я ожидал, что будет отличная функцияудалить дубликат записи.

Я также пытался

$messages = Message::where('recipient_id', $user)->distinct()->get();

Но это тоже не сработало.

Если я получил 3 сообщения от 2 разных пользователей, он выводит что-то вроде следующего:

Сообщения от:

  • Пример пользователя 1
  • Пример пользователя 1
  • Пример пользователя 2

Что он должен выводить

  • Пример пользователя
  • Пример пользователя 2

Спасибо

1 Ответ

0 голосов
/ 23 мая 2018

Используйте Laravel Collection и измените код на:

    $messages = collect(Message::where('recipient_id', $user)->get());

    $messagesUnique = $messages->unique('recipient_id');

    $messagesUnique->values()->all();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...