Laravel Eloquent 使用 where 查询

Laravel Eloquent query using where

我有两个模型。一个状态和一个 SaleDetails。

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();

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

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

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

要应用 where 条件,您可以使用 whereHas() 比如,

$status = "pending";

$this->sale_details->whereHas('status', function($q) use ($status){
   $q->where('slug', $status);
})->get();

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