我有4张桌子:
"汽车"表,每辆车都有一个ID。
"操作"保存操作的表已在汽车上完成。
| ID | CarID | Operation | User | JournalID |
| --- | ----- | --------- | ---- | --------- |
"交易"记录操作成本和其他日常开支的表,其中每个操作有2个交易,一个是> 0和另一个是< 0(例如:+100和-100):
| ID | Account | JournalID | Amount | Date |
| --- | ------- | --------- | ------ | ---- |
"中国"记录每日财务的表格:
| ID | Amount | Date |
| --- | ------ | ---- |
我想要的是知道特定汽车的操作成本amount
的总和,我正在循环该汽车的所有操作,然后循环每个日记帐行总和,这导致一个糟糕的结果当然
在这种情况下,我能做些什么来尽快获得结果?
注意:所有列的名称都是较低的情况
答案 0 :(得分:2)
你需要根据这样的外键加入三个表,并使用一些select和raw查询来解决你的问题。
DB::table('cars')->join('operations','cars.id','operations.car_id')
->join('journal','journal.id','operations.journal_id')
->select(DB::raw('SUM(amount) as total_cost'),'cars.*')
->groupBy('cars.id')
->get();
答案 1 :(得分:1)
我最终用@ Segar的答案进行了解决:
$result = DB::table('cars')
->join('operations','cars.id','operations.car_id')
->join('journal','journal.id','operations.journal')
->join('transactions','transactions.journal','operations.journal')->where('transactions.type', 0)
->select(DB::raw('SUM(amount) as total_cost'),'cars.*')
->groupBy('cars.id')
->get();
print_r($result);
感谢。