Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Laravel 5.x » Laravel. Как написать запрос с группировкой по одному полю » 02.12.2018 19:47:12

denis_che
Ответов: 0

Есть две таблицы packages и packages_description. В первом: название, цена. В другом: package_id, описание. Написал запрос для вывода пакетов и их описания. Выдало:

[items:protected] => Array
    (
        [0] => stdClass Object
            (
                [id] => 7
                [title] => Старт
                [price] => 500
                [order] => 1
                [addition] => 
                [description] => 1 вариант рекламного объявления
            )

        [1] => stdClass Object
            (
                [id] => 7
                [title] => Старт
                [price] => 500
                [order] => 1
                [addition] => 
                [description] => Запуск 1 рекламного объявления
            )

        [2] => stdClass Object
            (
                [id] => 7
                [title] => Старт
                [price] => 500
                [order] => 1
                [addition] => 
                [description] => отчет
            )

        [3] => stdClass Object
            (
                [id] => 8
                [title] => Бизнес
                [price] => 1500
                [order] => 2
                [addition] => 
                [description] => отчет
            )

        [4] => stdClass Object
            (
                [id] => 9
                [title] => Индивидуальный
                [price] => 5000
                [order] => 3
                [addition] => от
                [description] => 
            )

    )

Сам запрос:

$packages = DB::table('packages')
        ->select(DB::raw('packages.*, packages_description.description as description'))
        ->leftJoin('packages_description', 'packages.id', '=', 'packages_description.package_id')
        ->groupBy('id', 'description')
        ->get();

Как нужно вывести:

(
                [id] => 7
                [title] => Старт
                [price] => 500
                [order] => 1
                [addition] => 
                [description] => array( '1 вариант рекламного объявления', 'Запуск 1 рекламного объявления', 'отчет')
            )

Пытался написать вот так, но выдаёт ошибку.

        $descriptions = DB::table('packages_description')
            ->select('packages_description.description')
            ->groupBy('description');


        $packages = DB::table('packages')
            ->select()
            ->leftJoinSub($descriptions, 'description', 'packages.id', '=', 'packages_description.package_id')
            ->groupBy("id")
            ->get();

Как правильно написать запрос?

Подвал раздела