Что не так с моим кодом Laravel Callback функция GroupBy месяц - PullRequest
0 голосов
/ 28 января 2019

Я собираюсь посчитать свое pallet_condition 0,1,2,3 и сгруппировать его по месяцам, но я всегда получаю такую ​​ошибку, пожалуйста, помогите, что не так с моим кодом.что-то не так с моим date_format?

Моя ошибка

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'created_at' in group statement is ambiguous (SQL: select count(*) as aggregate from `liip_psrm` inner join `liip_psrm_items` on `liip_psrm`.`id` = `liip_psrm_items`.`psrm_items_id` where date(`liip_psrm_items`.`created_at`) >= 2018-10-09 and date(`liip_psrm_items`.`created_at`) <= 2019-01-31 and `liip_psrm`.`status` = 0 and `liip_psrm`.`customer_id` = 14 and `pallet_condition` = 0 group by WEEK(created_at) order by WEEK(created_at) asc) 

Моя функция обратного вызова

$problem_condition_computations = function($condition) use ($psrm_maintenance, $start, $end, $customers){
        return DB::table('liip_psrm')
        ->join('liip_psrm_items', 'liip_psrm.id', '=', 'liip_psrm_items.psrm_items_id')
        ->whereDate('liip_psrm_items.created_at', '>=', $start)
        ->whereDate('liip_psrm_items.created_at', '<=', $end)
        ->select(
                DB::raw("DATE_FORMAT(liip_psrm_items.created_at, '%Y-%m-%d') AS dates
                "))
                ->where('liip_psrm.status','=', 0)
                ->where('liip_psrm.customer_id','=',$customers)
                ->where('pallet_condition', $condition)
                ->groupBy('dates')   
                ->count();
      };

1 Ответ

0 голосов
/ 15 апреля 2019

Поле «даты», которое вы используете в groupBy, является псевдонимом, поэтому оно не идентифицирует его и не работает так, как вы ожидаете.

То же, что вы использовали в Select

DB::raw("DATE_FORMAT(liip_psrm_items.created_at, '%Y-%m-%d') AS dates")

Поместите это в GroupBy, и оно будет работать.

Надеюсь, это поможет, дайте мне знать, если вы все еще найдете трудности.

...