【发布时间】:2018-01-26 02:15:30
【问题描述】:
我有 3 个表,分别名为 cash_manages、outlets 和 delivery_boys,结构是
//outlets
id name
1 utha
2 alabama
//delivery_boys
id outlet_id name
1 1 John
2 1 Mike
3 2 Alex
//cash_manage
id source_type source_id destination_id status amount
1 admin 1 2 give 500
2 admin 2 1 give 350
3 deliveryBoy 1 2 receive 300
4 admin 2 2 give 500
5 admin 2 1 give 800
6 user 1 1 give 600
7 user 2 2 give 450
//the logic
1-> if source_type is admin then the source_id is outlet_id and the cash is **GIVEN** to destination_type delivery_boy_id
2-> if source_type is deliveryBoy then the source_id is delivery_boy_id and the cash is **Received** by destination_type outlet_id(admin)
我想在视图中得到如下结果(带送货员的现金)
num outlet delivery_boy cash_taken cash_returned cash_has
1 alabama John 1150 300 1050
2 alabama mike 500 0 500
我加入了所有三个表,并且能够获得 Outlet Name 和 Delivery Boy Name。 现在我被困在计算部分
public function index(Request $request)
{
$outlet_id = $request->outlet_id;
$transaction_list = DeliveryCashManage::leftJoin('outlets','outlets.id','delivery_cash_manages.source_id')
->leftJoin('delivery_boys','delivery_boys.id','destination_id')
->where('source_type', 'admin')
->where('source_id', $outlet_id)
->select('delivery_cash_manages.id','outlets.name as outlet','delivery_boys.name as delivery_boy','amount')
->groupBy('delivery_boys.name')
->get();
return view('pages.manager.cash');
}
我收到以下错误
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ideal_chicken.delivery_cash_manages.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select `delivery_cash_manages`.`id`, `outlets`.`name` as `outlet`, `delivery_boys`.`name` as `delivery_boy`, `amount` from `delivery_cash_manages` left join `outlets` on `outlets`.`id` = `delivery_cash_manages`.`source_id` left join `delivery_boys` on `delivery_boys`.`id` = `destination_id` where `source_type` = admin and `source_id` = 1 group by `destination_id`)
我认为我的查询或逻辑有误,请帮助解决此问题
谢谢
【问题讨论】:
-
感谢您的回复非常感谢,我如何计算
cash_taken,cash_returned。谢谢 -
当源类型为 admin 时,这有点令人困惑,源 id 成为 outlets 表上的目标 id,这很好。但是现金是给destination_typedelivery_boy_id的……destination_type指的是什么?那是另一张桌子吗?我不确定如何将管理员记录准确地连接到送货员。另外,您正在寻找的结果是实际结果吗?或者它只是您正在寻找的一个示例并且具体数字是由组成的?
-
另外,您的左连接似乎没有遵循您自己的规则。当源类型为 deliveryBoy 时,您说 source_id 是 delivery_boy_id 但您在 delivery_boys.id = destination_id 上加入这两个表
-
@user3158900 感谢您的回复,如果
source_type是admin那么source_id是outlet_id并且destination_id 是delivery_boy_id。如果source_type是deliveryBoysource_id是delivery_boy_id,destination_id 将是outlet_id。
标签: php mysql laravel eloquent laravel-5.4