Laravel groupBy, но сохраняйте другие значения

У меня были проблемы с объединением нескольких результатов, которые я получаю, пытаясь избежать отдельного для каждого, чтобы сделать это.

В основном у меня есть таблица с переводами на два языка.
Столбцы таблицы:

id | service_id | name | slug | lang

Пример ввода (одни и те же сервисы, только разные переводы):

service_id: 1, name: 'Igre', slug: 'igre', lang: 'hr'

service_id: 1, name: 'Games', slug: 'games', lang: 'en'

Теперь я пытаюсь объединить эти строки на основе service_id без потери или перезаписи значений друг друга.

Пример (что я хочу, чтобы мой вывод был основан на двух строках выше):

service_id: 1, name_hr: 'Igre', name_en: 'Games', slug_hr: 'igre', slug_en: 'games'

Или что-то близкое к этому, главное объединить все в одно поле массива на основе id без потери других данных. Я пытался использовать groupBy() но всегда в конечном итоге одно значение перезаписывает другое.

РЕДАКТИРОВАТЬ:

$service = Service::with(['subservice' => function($query){
$query->leftJoin('subservice_translations', 'subservices.id', 'subservice_translations.subservice_id');
$query->select('subservices.*', 'subservice_translations.name as name', 'subservice_translations.lang as lang');
}])
->join('service_translations', 'services.id', 'service_translations.service_id')
->select('services.*', 'service_translations.name as name', 'service_translations.lang as lang')
->where('services.id', $id)
->orderByRaw("FIELD(lang , 'hr', 'en') ASC")
->get();

Это мой запрос в настоящее время. Оба «Услуги» и «подсервисыесть переводы. Один ‘обслуживаниеможет иметь несколькоподсервисы‘которые также имеют переводы. Так что, если я введу 5 ‘подсервисы‘ для меня ‘обслуживание«На самом деле я ввожу 10 (5 в« час »и 5 в« en »). Я не хочу, чтобы у моего результата запроса было 10 результатов, а 5 с выводом, как я сказал выше в примере.

0

Решение

Я не вижу ваш запрос здесь, но я думаю, что вы можете использовать groupBy после вашего ->get() Если нет, вы можете проверить свой запрос, включив журнал запросов.

DB::connection()->enableQueryLog();
// do your query here
$queries = DB::getQueryLog();`
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector