gpt4 book ai didi

php - Laravel:如何将此查询转换回 Eloquent 查询?

转载 作者:行者123 更新时间:2023-11-29 17:53:26 26 4
gpt4 key购买 nike

如何将此查询转换回 Eloquent 查询。我做这个是为了测试,因为我无法获得原始 Laravel 查询的结果,所以我尝试直接测试数据库。现在我的问题是我将查询包装在 select 和 group 中 得到我需要的结果

SELECT t.restaurant_number, COUNT(t.lowDollarModified)
FROM (
SELECT
header.transaction_id,
header.restaurant_number,
(SUM(CASE
WHEN
(
header.net_amount <= 2.50 or
details.detail_type = 90
or details.modifier_flag > 0
)
AND tender.description = '01 CASH'
THEN
1
ELSE 0
END)) AS lowDollarModified
FROM
`db_prod`.`header`
INNER JOIN
`db_prod`.`details` ON `header`.`transaction_id` = `details`.`transaction_id`
INNER JOIN
`db_prod`.`tender` ON `header`.`transaction_id` = `tender`.`transaction_id`
WHERE
`business_date` BETWEEN '2018-03-01' AND '2018-03-04'
AND NOT EXISTS( SELECT
*
FROM
`db_prod`.`ticket_mapping`
WHERE
`header`.`transaction_id` = `ticket_mapping`.`transaction_id`
AND `isClosed` = 1)
AND `header`.`restaurant_number` = 1606
GROUP BY `header`.`restaurant_number`, transaction_id
Having lowDollarModified > 0
) as t
GROUP BY t.restaurant_number

这是我在 Laravel 中的原始查询

$stores1 = Header::select([
DB::raw('header.transaction_id'),
DB::raw('header.restaurant_number'),
DB::raw('(SUM(CASE WHEN
(
header.net_amount <= '.$void.' or
details.detail_type = 90 or
details.modifier_flag > 0
) and
tender.description = "01 CASH"
THEN 1 ELSE 0 END
) ) as lowDollarModified
')
])
->join('details', 'header.transaction_id','details.transaction_id')
->join('tender','header.transaction_id','tender.transaction_id')
->whereBetween('business_date',[$date_from, $date_to])
->whereDoesntHave('ticketmapping', function($query){
$query->where('isClosed', 1);
})
->where('header.restaurant_number','1606')
->groupBy('header.restaurant_number', 'header.transaction_id')
->havingRaw('lowDollarModified > 0')
->get();

最佳答案

DB::select(`t.restaurant_number`)
->addSelect(DB::raw(`COUNT(t.lowDollarModified)`))
->from(`SELECT header.transaction_id, header.restaurant_number, ( SUM( CASE WHEN ( header.net_amount <= 2.50 or details.detail_type = 90 or details.modifier_flag > 0 ) AND tender.description = 01 CASH THEN 1 ELSE 0 END ) ) AS lowDollarModified FROM db_prod.header INNER JOIN db_prod.details ON header.transaction_id = details.transaction_id INNER JOIN db_prod.tender ON header.transaction_id = tender.transaction_id WHERE business_date BETWEEN 2018-03-01 AND 2018-03-04 AND NOT EXISTS( SELECT * FROM db_prod.ticket_mapping WHERE header.transaction_id = ticket_mapping.transaction_id AND isClosed = 1 ) AND header.restaurant_number = 1606 GROUP BY header.restaurant_number, transaction_id Having lowDollarModified > 0 as t`)
->groupBy(`t.restaurant_number`)
->get();

这是由该工具生成的:http://www.midnightcowboycoder.com/

关于php - Laravel:如何将此查询转换回 Eloquent 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49094478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com