首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel数据库严格模式

Laravel数据库严格模式
EN

Stack Overflow用户
提问于 2018-03-12 07:19:27
回答 3查看 8.8K关注 0票数 5

难怪请帮帮我。

我的查询是:- Invoice::join('orders', 'orders.invoice_id', '=', 'invoices.id')->groupBy('invoices.id')->get();

然后我得到了一个错误:语法错误或访问冲突: 1055 'invoices.reference_number‘不在

当我根据错误更新我的查询时,查询是:-

代码语言:javascript
运行
复制
$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.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中启用了谁的数据库严格模式验证,因为我想知道是什么严格的验证给了我一个错误。

EN

回答 3

Stack Overflow用户

发布于 2018-03-12 07:40:22

更改mysql数组的config/database.php中的这一行

代码语言:javascript
运行
复制
'strict' => true,

代码语言:javascript
运行
复制
'strict' => false,
票数 9
EN

Stack Overflow用户

发布于 2018-03-12 07:43:23

如果发生这种情况,则添加此函数的顶部

代码语言:javascript
运行
复制
public function index() {
    DB::statement("SET sql_mode = '' ");
    # rest of your Joins
}
票数 5
EN

Stack Overflow用户

发布于 2022-04-27 10:17:10

在数据库文件中设置连接后运行此查询

代码语言:javascript
运行
复制
SET sql_mode = false; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49229955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档