I am working on a Laravel project. I am trying to write an Eloquent where I need to use raw where clause for COUNT.
This is my query.
$eligibleReceivers = ReceiverDevice::havingRaw('COUNT(phone_number) < 10') ->having('phone_number', '!=', $device->phone_number) ->groupBy('phone_number')->get(); I am trying to select the records where records the same phone_number must be less than 10.
When I run the code, I am getting the following error.
[previous exception] [object] (PDOException(code: 42000): SQLSTATE[42000]: Syntax error or access violation: 1055 'fork.receiver_devices.id' isn't in GROUP BY at /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php:331) [stacktrace] #0 /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(331): PDO->prepare('select * from `...') #1 /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(662): Illuminate\\Database\\Connection->Illuminate\\Database\\{closure}('select * from `...', Array) #2 /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(629): Illuminate\\Database\\Connection->runQueryCallback('select * from `...', Array, Object(Closure)) #3 /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php(338): Illuminate\\Database\\Connection->run('select * from `...', Array, Object(Closure)) #4 /var/www/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2149): Illuminate\\Database\\Connection->select('select * from `...', Array, true) #5 /var/www/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2137): Illuminate\\Database\\Query\\Builder->runSelect() #6 /var/www/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2609): Illuminate\\Database\\Query\\Builder->Illuminate\\Database\\Query\\{closure}() #7 /var/www/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(2138): Illuminate\\Database\\Query\\Builder->onceWithColumns(Array, Object(Closure)) #8 /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(545): Illuminate\\Database\\Query\\Builder->get(Array) #9 /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(529): Illuminate\\Database\\Eloquent\\Builder->getModels(Array) #10 /var/www/app/Http/Requests/RegisterDeviceRequest.php(72): Illuminate\\Database\\Eloquent\\Builder->get() #11 /var/www/app/Http/Requests/RegisterDeviceRequest.php(60): App\\Http\\Requests\\RegisterDeviceRequest->registerReceiversFor(Object(App\\Models\\ClientDevice)) #12 /var/www/app/Http/Controllers/Auth/RegisterDeviceController.php(14): App\\Http\\Requests\\RegisterDeviceRequest->persist() #13 [internal function]: App\\Http\\Controllers\\Auth\\RegisterDeviceController->store(Object(App\\Http\\Requests\\RegisterDeviceRequest)) #14 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array) #15 /var/www/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('store', Array) #16 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php(219): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\Auth\\RegisterDeviceController), 'store') #17 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php(176): Illuminate\\Routing\\Route->runController() #18 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(681): Illuminate\\Routing\\Route->run() What is wrong with my code and how can I fix it?