Как я могу получить сообщение со всеми связанными с ним?

Вот мои структуры таблиц:

// tickets
+----+------------+----------------------+--------+---------+
| id |  subject   |        content       | closed | user_id |
+----+------------+----------------------+--------+---------+
| 1  | subject1   | question1            | 0      | 123     |
+----+------------+----------------------+--------+---------+

// answers
+----+----------------------+---------+-----------+
| id |        content       | user_id | ticket_id |
+----+----------------------+---------+-----------+
| 1  | answer1              | 123     | 1         |
| 2  | answer2              | 456     | 1         |
+----+----------------------+---------+-----------+

Теперь мне нужно получить билет со всеми ответами. Я могу сделать это, используя чистый SQL, вот так:

SELECT t.*, a.*
FROM tickets t
LEFT JOIN answers a
ON t.id = a.ticket_id
WHERE t.id = ?

Теперь я использую Laravel, и я хочу сделать это, используя класс with()(однако не уверен, что это возможно). Есть идеи, какие изменения я должен внести в модели для этого?

Заметил, что я могу получить просто билет в Laravel вот так:

$ticket = Tickets::where('id', $request->id)->get();
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
2
0
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала создайте отношение имеет много() в своем классе модели Tickets.

public function answers()
{
    return $this->hasMany(Answers::class, 'ticket_id', 'id');
}

А затем в запросе вашего контроллера

$tickets = Tickets::with('answers')->where('id', $request->id)->get();

Ах, понятно, спасибо. Также я предполагаю, что есть другой подход (кроме with()). Вы хоть представляете, что это? (чтобы присвоить ответы другой переменной)

Martin AJ 10.04.2018 10:38

это неплохо, правда? Я даже не стал искать другое решение.

Sohel0415 10.04.2018 10:48

Я думаю, он об этом говорит: $ticket = Tickets->where('id', $request->id); $answers = $ticket->answers;

Shafizadeh 10.04.2018 10:50

потребуется дополнительный запрос n+1

Sohel0415 10.04.2018 10:51

Другие вопросы по теме