【发布时间】:2018-10-04 08:19:53
【问题描述】:
我有三个表,一个是 orders 表,另一个是 order_status 表,另一个是 status 表。 order_status 表的目的是保持跟踪订单的事件。我的表有以下列。
订单表
----------------------------
id | ref_num | name | email |
-----------------------------
订单状态表有
---------------------------
order_id | status_id
---------------------
我的模型是这样的 订单模式
public function orderStatus(){
return $this->hasMany(OrderStatus::class');
}
订单状态模型
public function detail(){
return $this->belongsTo(Status::class,'status_id','id');
}
public function order(){
return $this->belongsTo(Order::class);
}
现在我想获得所有那些仍待处理的订单。 我该怎么做?
我试图像这样检索但失败了
$data['orders']= Order::with(['orderStatus' =>function($q){
$q->with('detail')->latest()->where('status_id',2);
}])->latest()->take(10)->get()->toArray();
这只会返回一个,之后不会。
谁能告诉我如何排序这个? 谢谢
PS:: 一个订单可以有多种状态,如未付款、待处理、打包中、在途等,但顺序不同
我添加了订单状态表图片。如您所见,E7E7FF0EB7 订单号有两条记录 1,2 表示它是待处理的,然后稍后阶段已交付。或者您可以说已处理。其中 E02EAEA4BE 只有一条状态为 1 的记录。这意味着它仍处于待处理状态。 所以我只想得到那些仍在等待中的。未交付。 这听起来有点复杂,希望我能够正确解释我想要做什么。
【问题讨论】:
-
试试这个
$data['orders']= Order::with('orderStatus' =>function($q){ $q->where('status_id',2); })->latest()->take(10)->get()->toArray();
标签: php mysql laravel laravel-5 eloquent