выберите запрос в laravel - PullRequest
1 голос
/ 30 мая 2020

Я создал свое приложение в laravel. Мой sql запрос работает нормально. Меня поразил laravel запрос

select a.type from chart_table a left join color_codes b on a.type=b.type_id group by a.type

Для приведенного выше запроса пробовали как

DB::table('chart_table')
    ->leftjoin('color_codes','color_codes.type_id','=','chart_table.type')
    ->whereIn('chart_table.user_name',$filter_username_details)
    ->orderBy('color_codes.id', 'asc')
    ->groupBy('chart_table.type')
    ->pluck('chart_table.type')
    ->toArray();

Я получаю сообщение об ошибке

SQLSTATE[42803]: Grouping error: 7 ERROR:  column &quot;color_codes.id&quot; must appear in the GROUP BY clause or be used in an aggregate function<br />
LINE 1: ...le&quot;.&quot;type&quot; group by &quot;chart_table&quot;.&quot;type&quot; order by &quot;color_cod..

Что я сделал не так в своем запросе

Ответы [ 2 ]

2 голосов
/ 30 мая 2020

для groupBy, вам нужно будет изменить strict как false. Это не повлияет на ваш запрос SQL / Eloquent.

enter image description here

, а затем попробуйте.

DB::table('chart_table')
    ->leftjoin('color_codes','color_codes.type_id','=','chart_table.type')
    ->whereIn('chart_table.user_name',$filter_username_details)
    ->orderBy('color_codes.id', 'asc')
    ->groupBy('chart_table.type')
    ->pluck('chart_table.type')
    ->toArray();

Надеюсь это сработает для вас.

1 голос
/ 30 мая 2020

Небольшое изменение, которое вам нужно будет сделать в своем проекте database.php

Go to config/database.php inside connections => mysql => [ 'strict': false ]

enter image description here

И ваш запрос будет выглядеть примерно так

DB::table('chart_table as a')
->select('a.type')
->leftJoin('color_codes as b','b.type_id','=','a.type')
->whereIn('a.user_name',$filter_username_details)
->orderBy('b.id', 'asc')
->groupBy('a.type')
->get()
->toArray();
...