I'm trying to build a query with laravel 5.3. But I'm getting this error when I make this query.
Error:
SQLSTATE[42000]: Syntax error or access violation: 1055 'laravel.location.locationDate' isn't in GROUP BY (SQL: select count(*), locationDate from
locationwheretagCode= 24930 andxLocation> -1 andxLocation< 194 andyLocation> 60 andyLocation< 190 andcreated_at> 2017-03-09 00:00:01 andcreated_at< 2017-03-09 23:59:59 group by DATE(locationDate), hour(locationDate))
By the way if I copy query and try to run it in sql its working. but I'm just adding quotes to to created_at like '2017-03-09 00:00:01'
And this is my code..
$zoneTime = DB::table('location')
->select(DB::raw('count(*), locationDate'))
->where('tagCode', $tagCode)
->where('xLocation', '>', $workingZone->x1)
->where('xLocation', '<', $workingZone->x3)
->where('yLocation', '>', $workingZone->y3)
->where('yLocation', '<', $workingZone->y1)
->where('created_at', '>', $startDate)
->where('created_at', '<', $endDate)
->groupBy(DB::raw('DATE(locationDate)'))
->groupBy(DB::raw('hour(locationDate)'))
->get();
I changed strict = false inside config/database and its worked.
You have to use the same field in the group by clausel like this:
$zoneTime = DB::table('location')
->select(DB::raw('count(*), locationDate'))
->where('tagCode', $tagCode)
->where('xLocation', '>', $workingZone->x1)
->where('xLocation', '<', $workingZone->x3)
->where('yLocation', '>', $workingZone->y3)
->where('yLocation', '<', $workingZone->y1)
->where('created_at', '>', $startDate)
->where('created_at', '<', $endDate)
->groupBy(DB::raw('DATE(locationDate) as locationDate'))
->groupBy(DB::raw('hour(locationDate)'))
->get();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With