我有一个名为“orders”的表,其中包含以下属性
订单
ID
总
另一个名为order_statuses的表,其中包含以下属性
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(),那么我得到一些结果,但它不适用于最后一个状态。并且计数功能也不起作用。
答案 0 :(得分:0)
我不知道为什么你的查询中有撇号?只需删除它就可以了:
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
并且您错过了您的状态值。