Laravel получает все разговоры по столбцу user_id и каждый разговор должен получать все сообщения


Laravel получает все разговоры по столбцу user_id и каждый разговор должен получать все сообщения

16.09.2020 09:59:02 Просмотров 27 Источник

у меня за столом разговоры Разговоров было много разговоров

и у меня есть таблица сообщений Таблица сообщений содержит много сообщений Таблица сообщений содержит строку, в которой каждое сообщение в таблице имеет строку conversation_id это указывает на то, что каждое сообщение принадлежит разговору

я умею пользоваться

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

 /**
 * Get the Messages for the Conversation chat.
 */
public function messages()
{
    return $this->hasMany('App\Message');
}

в контроллере im может получить все сообщения, которые принадлежат этому разговору (1)

$messages = App\Conversation::find(1)->messages ;

что я хочу, так это получить все разговоры по столбцу user_id, и каждый разговор должен получить все сообщения? массив разговора что - то вроде этого, если это возможно

[
  //conversation 0 
  [ 
    [
      id: 1
      message : "Bla bla bla",     
    ],
    [
      id: 2
      message : "Response to Bla bla bla",     
    ],
    [
      id: 3
      message : "Bye",     
    ]  
  ],
  //conversation 1 
  [ 
    [
      id: 1
      message : "Bla bla bla",     
    ] 
  ],
    //conversation 2 
  [ 
    [
      id: 1
      message : "Bla bla bla",     
    ] 
  ],
]

как мне это сделать пожалуйста я не знаю что мне использовать

У вопроса есть решение - Посмотреть?

Ответы - Laravel получает все разговоры по столбцу user_id и каждый разговор должен получать все сообщения / Laravel get all conversations by the column user_id and every conversation should get all the messages

Является ответом!
vinod

16.09.2020 10:09:23

Вы можете сделать так, чтобы получить разговоры пользователя:

$conversations = App\Conversation::with('messages')->where('user_id', $id)->get();

Где $id-идентификатор пользователя, а with('messages')-коллекция сообщений для разговора. Чтобы получить доступ к этому вы можете сделать просто так:

foreach($conversations as $conversation){
  $conversation->messages;
}
Помочь в развитии проекта:
Закрыть X