我已经用分页编写了这个查询
$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表示为下一列。为什么呢?
答案 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行