Eloquent groupBy make "SQLSTATE [42000]" mit gültiger SQL-Abfrage in Laravel 5.3
Ich habe ein seltsames Problem mit Eloquent, mit dem ich Folgendes zu tun versuche:
$this->node = \DB::table('permission')
->select('permission.id',
'object.name as object_name',
'permission.created_at',
'object.id as object_id')
->join('object', 'object.id', '=', 'permission.object_id')
->join('action', 'action.id', '=', 'permission.action_id')
->where('permission.person_id', $this->person['id'])
->groupBy('permission.object_id')
->orderBy('permission.created_at', 'desc')
->paginate(5);
Laravel Framework Fehler melden:
QueryException in Connection.php Zeile 761: SQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung: 1055 'permission.id' ist nicht in GROUP BY (SQL: selectpermission
.id
, object
.name
wieobject_name
, permission
.created_at
, object
.id
wieobject_id
vonpermission
inner joinobject
aufobject
.id
= permission
.object_id
inner joinaction
aufaction
.id
= permission
.action_id
wopermission
.person_id
= 1 Gruppe vonpermission
.object_id
Sortieren nachpermission
.created_at
Untergrenze 5 Offset 0)
Ich habe eine eloquente Debugging-Funktion hinzugefügtDB :: listen im AppServiceProvider:
use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
DB::listen(function ($query) {
echo "<pre>";
print_r($query->sql);
echo "</pre>";
// $query->sql
// $query->bindings
// $query->time
});
}
...
Und es gibt diese SQL-Abfrage aus:
select `permission`.`id`,
`object`.`name` as `object_name`,
`permission`.`created_at`,
`object`.`id` as `object_id`
from `permission`
inner join `object` on `object`.`id` = `permission`.`object_id`
inner join `action` on `action`.`id` = `permission`.`action_id`
where `permission`.`person_id` = 1
group by `permission`.`object_id`
order by `permission`.`created_at` desc
limit 5 offset 0
Was ist gültig in MySQL durch PhpMyAdmin und hier ist die Ausgabe für die Abfrage:Even Also, ich habe in @ getestmysql
Befehl direkt und es funktioniert gut, siehemysql output:
Irgendeine Idee
Vielen Dan