php - Sql 查询查找具有特定最后状态的订单

标签 php mysql sql laravel laravel-4

我有一个名为“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/

相关文章:

javascript - 谷歌地图在ajax上成功

php - 在访问时使用 PHP 从 MySQL 数据库中的 txt 文件导入数据

mysql - mysql支持垂直分区吗?

sql - 大表的自定义排序和分页

php - JSON编码的数组在什么情况下可以变成字符串?

php - OSCommerce tep_db_input 与 tep_db_prepare_input

java - 在android中上传图像到服务器

java - Hibernate:从不同的事务访问创建的实体

SQL:创建一个包含 24 小时行的表

php - MySQL - 如何更改表中行的顺序