Laravel数据库严格模式

时间:2018-03-12 07:19:28

标签: php mysql database laravel sql-mode

我很奇怪请帮助我。

我的查询是: - 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()

中的列

所以我做谷歌然后发现如果我关闭数据库严格模式然后它会工作然后我做了它并且它工作正常,但我不希望关闭严格模式。

另外,我做了关于数据库模式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中启用了谁的数据库严格模式验证,因为我想知道什么是严格的验证给我一个错误。

2 个答案:

答案 0 :(得分:4)

<select ng-model="value"> <option ng-repeat="single in [1,2,3,4,5]" ng-class="single== value ? 'red': ''"> {{single}}</option> </select>

mysql数组中更改此行
config/database.php

'strict' => true,

答案 1 :(得分:1)

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

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