"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 resolver o conflito SQL_MODE = ONLY_FULL_GROUP_BY no Laravel Eloquent?

Como resolver o conflito SQL_MODE = ONLY_FULL_GROUP_BY no Laravel Eloquent?

Publicado em 2024-11-04
Navegar:204

How to Resolve SQL_MODE=ONLY_FULL_GROUP_BY Conflict in Laravel Eloquent?

Resolvendo conflito SQL_MODE=ONLY_FULL_GROUP_BY no Laravel Eloquent

Ao usar o Eloquent para realizar uma consulta agrupar por, você pode encontrar um erro relacionado a configurações incompatíveis para sql_mode=only_full_group_by. Este erro pode ocorrer quando colunas não agregadas são incluídas na lista SELECT que não fazem parte da cláusula GROUP BY.

Para resolver esse problema, você pode desativar o modo MySQL estrito definindo o seguinte em seu banco de dados arquivo de configuração:

'connections' => [
    'mysql' => [
        'strict' => false,
    ]
]

Ao definir 'strict' como false, você está permitindo que o MySQL se comporte como se estivesse rodando no modo MySQL 5.6, que não impõe as regras estritas de agrupamento impostas por sql_mode=only_full_group_by.

Como alternativa, você pode modificar sua consulta do Eloquent para garantir que todas as colunas na lista SELECT sejam agregadas ou incluídas na cláusula GROUP BY. Por exemplo, você pode usar o método 'raw' para adicionar a agregação necessária:

$products = Product::where('status', 1)
    ->where('stock', '>', 0)
    ->where('category_id', '=', $category_id)
    ->groupBy('store_id')
    ->orderBy('updated_at', 'desc')
    ->selectRaw('*, COUNT(*) AS total_products')
    ->take(4)
    ->get();
Declaração de lançamento Este artigo foi reimpresso em: 1729224796 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