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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage