【发布时间】:2018-04-27 07:24:22
【问题描述】:
!三张桌子
- 库存 enter image description here
- 仓库 enter image description here
- inventory_has_warehouses enter image description here
我用过laravel yajra datatable。我需要在 inventory_has_warehouses 数据透视表中对 starting_balance 这个字段进行求和和搜索
我的代码:
$id = Auth::user()->id;
$row = Inventory::with('contact')->with('warehouse')
->select(
'inventories.*',
DB::raw('SUM(inventory_has_warehouses.starting_balance) as total')
)
->leftJoin('inventory_has_warehouses', 'inventory_has_warehouses.inventory_id', '=', 'inventories.id')
->leftJoin('warehouses', 'warehouses.id', '=', 'inventory_has_warehouses.warehouse_id')
->where('inventories.subscriber_id',$id)
->groupBy('inventories.id');
$datatable = DataTables::of($row)
->filterColumn('total', function($query, $keyword) {
$query->whereRaw('sum(inventory_has_warehouses.starting_balance) like ?', ['%'.$keyword.'%']);
})
return $datatable->make(true);
但我发现这种类型的错误
异常消息:↵↵SQLSTATE[HY000]:一般错误:1111 无效使用 组函数 (SQL: select count() as aggregate from (select
inventories.,SUM(inventory_has_warehouses.starting_balance) 为 总计从inventories左加入inventory_has_warehousesoninventory_has_warehouses.inventory_id=inventories.id左 加入warehouseswarehouses.id=inventory_has_warehouses.warehouse_id在哪里inventories.subscriber_id= 2 和inventories.status= 1 和 (LOWER(inventories.itemcode) 喜欢 %1% 或 LOWER(inventories.purchasedescription) LIKE %1% 或存在(选择 * 来自contacts其中inventories.supplier=contacts.id和 LOWER(contacts.name) LIKE %1%) 或 (sum(inventory_has_warehouses.starting_balance) like %1%)) 分组inventories.id) count_row_table)
mysql查询
选择库存。SUM(inventory_has_warehouses.starting_balance) 作为剩余库存的总数,加入inventory_has_warehouses on inventory_has_warehouses.inventory_id = inventory.id 离开加入 仓库上的仓库.id = inventory_has_warehouses.warehouse_id 其中 inventory.subscriber_id = 2 和 inventory.status = 1 和 (LOWER(inventories.itemcode) LIKE %1% 或 LOWER(inventories.purchasedescription) LIKE %1% 或存在(选择 * 来自inventories.supplier = contacts.id的联系人和 LOWER(contacts.name) LIKE %1%) 或 (sum(inventory_has_warehouses.starting_balance) like %1%)) 分组 库存.id
【问题讨论】:
-
您只能使用完整的 group by 语法,请阅读文档dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
标签: mysql laravel-5.6 php-7.1 yajra-datatable