"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como corrigir o erro "A expressão #1 da lista SELECT não está na cláusula GROUP BY" no Laravel Eloquent devido ao modo estrito do MySQL?

Como corrigir o erro "A expressão #1 da lista SELECT não está na cláusula GROUP BY" no Laravel Eloquent devido ao modo estrito do MySQL?

Publicado em 2024-11-08
Navegar:172

How to Fix \

Incompatibilidade com sql_mode=only_full_group_by no Laravel Eloquent

Encontrando o erro "A expressão #1 da lista SELECT não está na cláusula GROUP BY.. ." ao executar uma consulta Eloquent com agrupamento sugere uma incompatibilidade com o MySQL sql_mode=only_full_group_by. Para resolver isso:

Desative o modo estrito do MySQL

Uma solução é desabilitar a configuração do modo estrito do MySQL na configuração da conexão do banco de dados. No arquivo .env do Laravel, adicione a seguinte linha:

DB_STRICT_MODE=false

Alternativamente, você pode configurar o modo estrito em seu arquivo config/database.php:

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

Explicação

No MySQL 5.7 e posterior, o modo sql_mode=only_full_group_by requer que todas as colunas na lista SELECT sejam incluídas na cláusula GROUP BY ou sejam funções agregadas. Na consulta fornecida:

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

O id da coluna (chave primária) aparece na lista SELECT, mas não está incluído na cláusula GROUP BY. Ao desabilitar o modo estrito, o MySQL permitirá colunas não agregadas na lista SELECT que não são funcionalmente dependentes das colunas GROUP BY.

Declaração de lançamento Este artigo foi reimpresso em: 1729224679 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3