我有一个名为“orders”的表,具有以下属性
订单
id
总计
另一个名为 order_statuses 的表,具有以下属性
订单状态
id
order_id
状态
不同的状态有待处理、处理中、已发货、已完成
我正在尝试查找其最后状态为例如的订单特定年份和月份的待定
我在laravel中尝试的sql查询是这样的
Order::join('order_statuses','orders.id','=','order_statuses.order_id')->orderBy('order_statuses.id', 'desc')->groupBy('order_statuses.order_id')->where('order_statuses.status','=','Pending')->whereRaw("YEAR(orders.created_at) = ".$year)->whereRaw("MONTH(orders.created_at) = 1")->count()
我检查了查询,发现如果编写 get() 方法而不是 count() ,那么我会得到一些结果,但它不适用于最后的状态。而且计数功能也不起作用。
最佳答案
我不知道你的查询中为什么有撇号?只需删除它即可正常工作:
select * from orders inner join
order_statuses on (orders.id = order_statuses.order_id)
where order_statuses.status = ? and
YEAR(orders.created_at) = 2016 and
MONTH(orders.created_at) = 1
group by order_statuses.order_id
order by order_statuses.id desc
并且您错过了您的状态值。
关于php - Sql 查询查找具有特定最后状态的订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39080043/