Laravel 连接 3 table 和 select 原始总和
Laravel join 3 table and select raw sum
我在 Laravel 项目中有 3 tables
第一个table“优惠”
id
client
numer_offer
id_user
1
123
211/2022
11
2.
145
212/2022
23
第二个table“客户”
id
name
adres
123
Mark
211/2022
145
Ben
212/2022.
最后一个table“offer_items”
id
id_offer
product
amount
1
2
bags
14.56
2
2
bags2
16.50
并有疑问:
$id_user = '11';
$offers = Offer::join('clients', 'clients.id', '=', 'offers.client')
->join('offer_items','.offer_items.id_offer', '=', 'offers.id')
->selectRaw(' sum(offer_items.amount) as suma, clients.name, offers.*')
->where('offers.id_user', $id_user)
->groupBy('offer_items.id_offer')
->Orderby('offers.id_offer')
->get();
如果我在“offer_items”中有记录,查询工作正常,但如果我在 table 中没有记录,则没有任何显示,我希望显示所有内容和数量= 0.
不知道,因为昨天我一整天都没睡 :(
在加入 offer_items
时使用 leftJoin
而不是 join
来检索数据是否在 offer_items
上有记录,我还添加了 IFNULL
将 null 视为 0
$id_user = '11';
$offers = Offer::join('clients', 'clients.id', '=', 'offers.client')
->leftJoin('offer_items','offer_items.id_offer', '=', 'offers.id')
->selectRaw(' sum(IFNULL(offer_items.amount,0)) as suma, clients.name, offers.*')
->where('offers.id_user', $id_user)
->groupBy('offers.id')
->Orderby('offers.id')
->get();
的更多详细信息
我在 Laravel 项目中有 3 tables
第一个table“优惠”
id | client | numer_offer | id_user |
---|---|---|---|
1 | 123 | 211/2022 | 11 |
2. | 145 | 212/2022 | 23 |
第二个table“客户”
id | name | adres |
---|---|---|
123 | Mark | 211/2022 |
145 | Ben | 212/2022. |
最后一个table“offer_items”
id | id_offer | product | amount |
---|---|---|---|
1 | 2 | bags | 14.56 |
2 | 2 | bags2 | 16.50 |
并有疑问:
$id_user = '11';
$offers = Offer::join('clients', 'clients.id', '=', 'offers.client')
->join('offer_items','.offer_items.id_offer', '=', 'offers.id')
->selectRaw(' sum(offer_items.amount) as suma, clients.name, offers.*')
->where('offers.id_user', $id_user)
->groupBy('offer_items.id_offer')
->Orderby('offers.id_offer')
->get();
如果我在“offer_items”中有记录,查询工作正常,但如果我在 table 中没有记录,则没有任何显示,我希望显示所有内容和数量= 0.
不知道,因为昨天我一整天都没睡 :(
在加入 offer_items
时使用 leftJoin
而不是 join
来检索数据是否在 offer_items
上有记录,我还添加了 IFNULL
将 null 视为 0
$id_user = '11';
$offers = Offer::join('clients', 'clients.id', '=', 'offers.client')
->leftJoin('offer_items','offer_items.id_offer', '=', 'offers.id')
->selectRaw(' sum(IFNULL(offer_items.amount,0)) as suma, clients.name, offers.*')
->where('offers.id_user', $id_user)
->groupBy('offers.id')
->Orderby('offers.id')
->get();
的更多详细信息