Строгий режим базы данных Laravel

Я немного удивлен, пожалуйста, помогите мне.

Мой запрос: — Invoice::join('orders', 'orders.invoice_id', '=', 'invoices.id')->groupBy('invoices.id')->get();

Затем я получил ошибку: синтаксическая ошибка или нарушение прав доступа: 1055 ‘invoices.reference_number’ отсутствует в GROUP BY

Когда я обновил свой запрос в соответствии с ошибкой, запрос:

$invoices = Invoice::join('orders', 'orders.invoice_id', '=', 'invoices.id')->groupBy('invoices.id','invoices.reference_number','invoices.customer_address_id','invoices.country_id','invoices.paid_at','invoices.due_date','invoices.created_at','invoices.updated_at','invoices.deleted_at','orders.id','orders.currency_id','orders.user_id','orders.customer_id','orders.created_at','invoices.updated_at')->get();

Теперь запрос работает, но в этом случае я не могу использовать select(), Возвращает столбцы, которые находятся в groupBy()

Так что я сделал Google, а затем обнаружил, если я отключить строгий режим базы данных, то он будет работать, а затем я сделал, и он работает хорошо, но я не хочу, чтобы строгий режим отключен.

Кроме того, я сделал исследование о режимах базы данных https://dev.mysql.com/doc/refman/5.5/en/faqs-sql-modes.html https://dev.mysql.com/doc/refman/5.5/en/sql-mode.html

Тогда я нашел запрос: — SELECT @@GLOBAL.sql_mode; SELECT @@SESSION.sql_mode;

Но результат пустой

Если я делаю в базе данных — select * from invoices inner join orders on orders.invoice_id = invoices.id where invoices.deleted_at is null group by invoices.id

Тогда он работает нормально, означает, что нет проверки режима через MySQL, он настроил сторону Laravel

Кроме того, я не нашел связанных режимов базы данных в документации Laravel

Так что выручайте, если я что-то не так сделал.

И я также хочу знать, чья проверка строгого режима базы данных включена в laravel, потому что мне интересно, какая строгая проверка выдала мне ошибку.

0

Решение

Изменить эту строку в mysql массив config/database.php

'strict' => true,

к

'strict' => false,
2

Другие решения

Где это происходит, добавьте эту верхнюю часть функции

public function index() {
DB::statement("SET sql_mode = '' ");
# rest of your Joins
}
1

По вопросам рекламы [email protected]