语法错误或访问冲突:1140混合GROUP列laravel

时间:2018-04-15 21:28:21

标签: php laravel laravel-5 laravel-paginate

我已经用分页编写了这个查询

$items = Item::select('items.*', 'sub_category_name', 'category_name', 'sub_category_slug', 'category_slug')
        ->join('sub_categories AS sc', 'sc.sc_id', 'items.sub_category_id')
        ->join('categories AS c', 'c.category_id', 'sc.category_id')
        ->where('items.is_active', '=', 1)
        ->where('sc.is_active', '=', 1)
        ->where('c.is_active', '=', 1)
        ->where('sc.sc_id', '=', $sub_category_id)
        ->paginate(1);

但它说

语法错误或访问冲突:1140如果没有GROUP BY子句,则GROUP GROUP列(MIN(),MAX(),COUNT(),...)的混合没有GROUP列是非法的

但是当我添加->groupBy('item_id');时,它说

语法错误或访问冲突:1055'books.items.item_name'不在GROUP BY中

但是当我在groupBy子句中执行item_name时,它会将groupBy表示为下一列。为什么呢?

2 个答案:

答案 0 :(得分:5)

使用Ext.onReady(function() { function ShowLoadingMask(view) { view.LoadMask = new Ext.LoadMask(view.el, { msg: 'Please wait...' }).show(); } function hideLoadingMask(view) { view.el.unmask() } function createForm() { return new Ext.FormPanel({ frame: true, title: 'Load Mask Example', bodyStyle: 'padding:10px;', defaults: { xtype: 'textfield', anchor: '100%', }, items: [{ fieldLabel: 'A' }, { fieldLabel: 'B' }, { fieldLabel: 'C' }, { xtype: 'combo', fieldLabel: 'Combo 1', store: new Ext.data.ArrayStore({ fields: ['text', 'value'], data: [{ abbr: 'yes', state: 'NO' }] }), displayField: 'text', valueField: 'text', typeAhead: true, queryMode: 'local' }, { xtype: 'combo', fieldLabel: 'Combo 2', store: new Ext.data.ArrayStore({ fields: ['text', 'value'], data: [{ abbr: 'yes', state: 'NO' }] }), displayField: 'text', valueField: 'text', typeAhead: true, queryMode: 'local' }, { xtype: 'datefield', fieldLabel: 'date 1' }, { xtype: 'datefield', fieldLabel: 'date 2' }], buttons: [{ text: 'Save' }, { text: 'Cancel' }] }); } var panel = new Ext.Panel({ id: 'demopanel', renderTo: Ext.getBody(), items: [createForm(), createForm(), createForm()], tbar: [{ text: 'Show Mask on All Form', handler: function(btn) { if (btn.getText() == 'Show Mask on All Form') { Ext.getCmp('demopanel').items.items.forEach(function(item) { ShowLoadingMask(item); }); btn.setText('Hide Mask on All Form') } else { Ext.getCmp('demopanel').items.items.forEach(function(item) { hideLoadingMask(item); }); btn.setText('Show Mask on All Form') } } }] }); }); 等聚合函数时,必须使用MIN(),MAX(),COUNT() AVG()

但是在最新的Group BY中,你必须使用select中的所有列作为一个组。

MYSQL关闭严格模式。

config/database.php
之后

'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ], 您也可以在单个列上使用group by。

答案 1 :(得分:0)

您可以在模式数组中注释ONLY_FULL_GROUP_BY行