получить список изображений по сообщению и идентификатору потока из базы данных - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть две таблицы: одна - это сообщения, а другая - изображения, сообщение сохраняется в таблице сообщений, а изображения сообщений сохраняются в другой таблице с внешним ключом msg_id, и я работаю над этим, как будто в одном потоке есть несколько сообщений и изображений. позвольте мне показать вам фотографии.

Here is Messages Table

и вот моя таблица изображений

here is my images table

вы видите, что в одном сообщении есть 3 изображения, а во втором сообщении с тем же потоком также есть 3 изображения, теперь я хочу сгенерировать json с двумя объектами, и у каждого объекта есть массив списка изображений с этими изображениями,

Я включил здесь в качестве примера json

{
  "status": "Success",
  "code": 200,
  "ConversationList": [
    {
      "id": 1,
      "category": "Budget",
      "cat_id": 1,
      "message": "Hi how are you",
      "dateTime": "12-12-2019 10:20:20 AM",
      "user_type": "1",
      "user_id": 1,
      "ImageList": [
        {
          "image": "askdaksdjaskdjkasjdaksd"
        },
        {
          "image": "askdaksdjaskdjkasjdaksd"
        }
      ]
    },{
      "id": 1,
      "category": "Budget",
      "cat_id": 1,
      "message": "Hi how are you",
      "dateTime": "12-12-2019 10:20:20 AM",
      "user_type": "1",
      "user_id": 1,
      "ImageList": [
        {
          "image": "askdaksdjaskdjkasjdaksd"
        },
        {
          "image": "askdaksdjaskdjkasjdaksd"
        }
      ]
    }
  ]
}

То, что я попробовал, это

$msg = Message::where('msg_dept_id',$request->msg_dept_id)

  ->join('images AS c', function($join){
      $join->on('messages.thread_id', '=', 'c.thread_id')
           ->on('messages.msg_id', '=', 'c.msg_id');
  })
  ->where('msg_dept_name',$request->msg_dept_name)
  ->where('messages.thread_id',$request->thread_id)
  ->orderBy('messages.msg_id', 'DESC')
  ->get();

  foreach($msg as $m)
  {
    $imagelist[] = Image::select('image')
    ->where('images.thread_id',$m->thead_id)
    ->where('images.msg_id',$m->msg_id)
    ->get();
  }

  // $data[] = $msg + $imagelist;
  // $data = json_encode($data);
  return response()->json([
    'status' => 'Success',
    'code' => 200,
    'messages' => $msg,
  ]);
}

1 Ответ

0 голосов
/ 14 ноября 2019

Вот как это делается, спасибо, кто мне помогает или пытается помочь мне, и спасибо (а я на самом деле не такой), кто отговаривает меня, проголосовав вниз

Вот ответ

$data['msg'] = Message::select('messages.*','u.cz_name As From_name','u1.cz_name As To_name')
        ->join('users AS u','u.id','messages.msg_from_id')
        ->join('users AS u1','u1.id','messages.msg_to_id')
        ->groupBy('thread_id')
        ->get();
        // ->toSql();

        foreach($data['msg'] as $key => $m)
        {
            $imagelist = Image::select('id','image','msg_image_approve')
            ->where('images.msg_id',$m->msg_id)
            ->get();
            $data['msg'][$key]->image = $imagelist;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...