Задать вопрос
@Apostol63

Как получить связанные данные из БД (mysql) в одном элементе массива?

Ребят, добрый день!
Честно говоря, не знаю даже как правильно сформировать вопрос, чтобы загуглить.
В общем ситуация следующая.
Есть 3 таблицы
1)doc_table5dafdb756c35c481828365.png
2)types5dafdb8172583048749069.png
3)docs_types5dafdb8f49f3a479209271.png
1ая таблица с документами
2ая с типами документов
3я таблица это связь этих 2х

Вот мой запрос в базу
$dataDb = DB::table('doc_table')->join('docs_types', function($join){
			$join->on('docs_types.doc_id', '=', 'id')->where('id', '=', 1);
		})->where('status', 1)->get();

И вот результат
5dafdbd0ecb9b657051681.png
И вот то, что подчеркнуто красным, хотелось бы, чтобы было в одном поле type_id
грубо говоря
[type_id] => [1, 2]

Как такой запрос сформировать? Чистый mysql или с использованием конструктора запросов Laravel, на данный момент совершенно не важно

Заранее всем спасибо!)
  • Вопрос задан
  • 189 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
@sidni
Php Developer
начните с этого, может поможет
SELECT dta.id, dta.doc_name, dta.doc_title, dta.link, dta.status, GROUP_CONCAT(DISTINCT dty.doc_id ORDER BY dty.doc_id ASC SEPARATOR ', ') AS type_id
FROM doc_table dta
INNER JOIN docs_types dty ON dta.id=dty.doc_id
GROUP BY dta.id;

или
SELECT dta.id, dta.doc_name, dta.doc_title, dta.link, dta.status, GROUP_CONCAT(DISTINCT t.type_name ORDER BY t.id ASC SEPARATOR ', ') AS type_name
FROM doc_table dta
INNER JOIN docs_types dty ON dta.id=dty.doc_id
INNER JOIN types t ON t.id=dty.type_id
GROUP BY dta.id;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Используй groupBy('id')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы