当存在多个状态时,如何对第一个状态做筛选
问题
一个商品存在上线流程,如订购、物流、入库、上架。
在表中有多个记录表示相应的时间节点流程。
现在有需求如,筛选出所有目前状态为物流中的商品。
目前表结构
- 商品表
- 流程表,流程表关联商品表,最新一条记录表示商品当前状态
实现存在的问题
使用联表查询时存在一定问题,不知道怎么表达筛选出所有数据中子表内容最近一条必须为1的记录。
尝试了
$q->whereHas('follow', function ($q) use ($request){
$q->latest()->limit(1)->where('state', $request->get('state'));
});
和
$q->whereHas('follow', function ($q) use ($request){
$q->where('state', $request->get('state'))->where('dispatch_id', clone($q)->latest()->first()->dispatch_id);
});
前者无效后者报错。。
目前解决方案是
- 在主表中维护状态字段
- 通过访问器定义一个字段
想问下大家有其他的解决的方法吗
子查询吧
blog.csdn.net/weixin_41939688/arti... 参考这个
首先:
得到商品ID,然后