"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo solucionar el error \"La expresión n.º 1 de la lista SELECT no está en la cláusula GROUP BY\" en Laravel Eloquent debido al modo estricto de MySQL?

¿Cómo solucionar el error \"La expresión n.º 1 de la lista SELECT no está en la cláusula GROUP BY\" en Laravel Eloquent debido al modo estricto de MySQL?

Publicado el 2024-11-08
Navegar:765

How to Fix \

Incompatibilidad con sql_mode=only_full_group_by en Laravel Eloquent

Encontrar el error "La expresión n.° 1 de la lista SELECT no está en la cláusula GROUP BY... ." al ejecutar una consulta Eloquent con agrupación sugiere una incompatibilidad con sql_mode=only_full_group_by de MySQL. Para resolver esto:

Deshabilitar el modo estricto de MySQL

Una solución es deshabilitar la configuración del modo estricto de MySQL en la configuración de conexión de su base de datos. En el archivo .env de Laravel, agregue la siguiente línea:

DB_STRICT_MODE=false

Alternativamente, puede configurar el modo estricto en su archivo config/database.php:

'mysql' => [
    // Disable strict mode
    'strict' => false,
],

Explicación

En MySQL 5.7 y posteriores, el modo sql_mode=only_full_group_by requiere que todas las columnas de la lista SELECT se incluyan en la cláusula GROUP BY o se funciones agregadas. En la consulta proporcionada:

$products = Product::where('status', 1)
            ->where('stock', '>', 0)
            ->where('category_id', '=', $category_id)
            ->groupBy('store_id')
            ->orderBy('updated_at', 'desc')
            ->take(4)
            ->get();

La identificación de la columna (clave principal) aparece en la lista SELECT pero no está incluida en la cláusula GROUP BY. Al deshabilitar el modo estricto, MySQL permitirá columnas no agregadas en la lista SELECT que no dependen funcionalmente de las columnas GROUP BY.

Declaración de liberación Este artículo se reimprime en: 1729224679 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3