2017-10-19 9 views
2

J'essayais d'utiliser groupBy pour regrouper toutes les vues par uni_id et leur date de création afin que je puisse générer des rapports. Mais je vois que Laravel Eloquent génère une erreur. Cependant, quand j'ai exécuté la même requête dans phpmyadmin, cela me montre des données. Comment Eloquent traite-t-il ses requêtes?Erreur de don éloquente mais la requête s'exécute correctement dans phpmyadmin

J'utilise Laravel 5.2

C'est la requête que je suis en train de courir à travers Eloquent:

$data = UniversityView:: 
    groupBy('created_at', 'uni_id') 
    ->select('uni_id', DB::raw('count(*) as views'), 'name', 'created_at') 
    ->get(); 

La question est comment y remédier. Je l'ai déjà corrigé en mettant 'name' dans le groupeBy. Mais la question est pourquoi la requête s'exécute différemment à travers Eloquent?

Consultez les images ci-dessous pour l'aide. Merci.

enter image description here enter image description here

Répondre

2

qui est causée par MySQL's strict mode, il est spécifié dans votre tableau de paramètres de connexion à config/database.php c'est pourquoi lorsque vous exécutez directement à phpMyAdmin il travaille, car phpMyAdmin utilise les paramètres de connexion différents.

Vous pouvez le désactiver partiellement, pour autoriser ce type de groupesBy, en modifiant votre tableau de connexion config/database.php. Faites-le de cette façon:

Ajouter modes tableau à seulement désactiver cette règle:

'strict' => true, 
'modes' => ['STRICT_TRANS_TABLES', 
      'NO_ZERO_IN_DATE', 
      'NO_ZERO_DATE', 
      'ERROR_FOR_DIVISION_BY_ZERO', 
      'NO_AUTO_CREATE_USER', 
      'NO_ENGINE_SUBSTITUTION'], 

Ou si vous savez ce que vous faites, vous pouvez le faire directement (je ne le ferai pas):

'strict' => false,