2

我有两个模型。状态和销售详情。

Status
------ 
  id
 name
 slug

我没有定义从 Status 到 SaleDetails 的任何关系。

SaleDetails
-----------  
  id
  id_statuses //connects it to the status table
  id_products
  price
  qty

在模型中:

  public function status(){
    return $this->belongsTo('App\Status', 'id_statuses', 'id');
}

所以我在这里要做的是获取所有状态与某个 slug 匹配的订单。例如dd($this->sale_details->where('status.slug', 'pending')

有了我所使用的:

$orders = $this->sale_details->with('product', 'status')->today()->get();

我应该能够根据前端的状态信息过滤它们,但我想直接从这里开始。

解决这个问题的最佳方法是什么?

4

2 回答 2

2

您应该使用whereHas()它允许您为要检查的相关模型指定其他过滤器。

要应用您可以使用的 where 条件whereHas()

$status = "pending";

$this->sale_details->whereHas('status', function($q) use ($status){
   $q->where('slug', $status);
})->get();
于 2017-01-09T05:14:25.700 回答
-2

我认为,如果您想要快速处理,比使用 查询生成器更好

于 2017-01-10T06:50:23.077 回答