Group_concat — красноречивый laravel

пожалуйста, я хочу использовать group_concat в запросе, используя красноречивые, а не необработанные запросы.

вот код, который я пытался выполнить и у меня не работал:

commands::join('products', 'products.id', '=','commands.idproduct')
->select('commands.username','**group_concat(products.name)**')
->group by ('commands. username')
->get();

Заранее спасибо :)


person user3481058    schedule 15.09.2014    source источник
comment
Попробуйте использовать DB::raw() для переноса «сырого» SQL в запрос: ->select('commands.username',DB::raw('group_concat(products.name)'))   -  person alexrussell    schedule 15.09.2014
comment
спасибо за ваш ответ @alexrussell, но проблема в том, что когда я добавляю DB::raw и снова запускаю приложение, я получаю эту ошибку: Symfony\Component\Debug\Exception\FatalErrorException Class 'Storage\Commands\DB' not found   -  person user3481058    schedule 15.09.2014
comment
Ах, вы находитесь в пространстве имен — либо добавьте use DB; после объявления вашего пространства имен, либо используйте DB в своем коде: \DB::raw('group_concat(products.name)')   -  person alexrussell    schedule 15.09.2014
comment
Большое спасибо @alexrussell, теперь я добавил использование БД; и работает отлично :)   -  person user3481058    schedule 15.09.2014


Ответы (6)


Я только что использовал:

use DB;

и в моем запросе я использовал

DB::raw('group_concat(products.name)')

person user3481058    schedule 15.09.2014
comment
Вы должны отметить этот ответ как правильный ответ, чтобы люди знали. - person alexrussell; 15.09.2014

Лучший тому пример..

 
ModelName::select('ID', DB::raw('CONCAT(First_Name, " ", Last_Name) AS full_name'))
           ->get()
           ->toArray();

Result 
   Jon Doe,Jeffery Way,Tailer,taylor otwell
person Uttam Panara    schedule 01.12.2014

Это сработало для меня

$list = TableName::where('user_id', 'user_001'
        ->groupBy('user_id')
        ->groupBy('subscription_id')
        ->select('user_id','subscription_id','type')
        ->selectRaw('GROUP_CONCAT(holiday) as holidays')
        ->get();

or

use Illuminate\Support\Facades\DB;

$sql = 'SELECT GROUP_CONCAT(holiday) as holidays, user_id,subscription_id, type FROM TableName 
        where vendor_id = 'user_001' GROUP BY user_id, subscription_id;';
$list = DB::select($sql, []);
person Sharath    schedule 24.01.2017

или просто заменить

->select('commands.username','**group_concat(products.name)**')

с

->selectRaw('commands.username, **group_concat(products.name)**')
person cabs    schedule 10.06.2016

Это сработало для меня: (9.0+)

DB::raw('string_agg(products.name, \',\') as products')

Вам нужно будет использовать Illuminate\Support\Facades\DB; для этого.

person Nisar P    schedule 13.01.2016

$data=\DB::table('paging_config') ->leftjoin('paging_groups', 'paging_config.page_group', '=', 'paging_groups.page_number') ->leftjoin('spk_mnt', 'paging_groups.ext' , '=', 'spk_mnt.stn_no') ->select('paging_config.page_group','paging_groups.ext', 'spk_mnt.stn_status') ->selectRaw('GROUP_CONCAT(DISTINCT description) as description') ->where ('paging_config.page_group','=','paging_config.page_group') ->groupBy('paging_config.description')

        ->get();
person srinu rathod    schedule 27.03.2017