【发布时间】:2018-08-20 03:52:58
【问题描述】:
难怪请帮帮我。
我的查询是:-Invoice::join('orders', 'orders.invoice_id', '=', 'invoices.id')->groupBy('invoices.id')->get();
然后我得到一个错误:语法错误或访问冲突:1055 'invoices.reference_number' is not in 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()中的列
所以我做了谷歌然后发现如果我关闭数据库严格模式然后它会起作用然后我做了并且它工作得很好,但我不想关闭严格模式。
另外,我研究了数据库模式https://dev.mysql.com/doc/refman/5.5/en/faqs-sql-modes.htmlhttps://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 中启用了谁的数据库严格模式验证,因为我想知道是什么严格验证给了我一个错误。
【问题讨论】:
-
我不想忽略或禁用或设置空白或更改我的数据库配置。请给我更多关于严格模式的信息。 Laravel 启用了哪些验证规则?我没有遵循什么 mySQL 规则?
-
我也遇到了这个问题,奇怪的是它在我的本地计算机上工作正常,但在我的登台服务器中出错。在我的暂存服务器中直接通过 heidiSQL 执行查询也可以。
标签: php mysql database laravel sql-mode