Php 使用where的Laravel雄辩查询

Php 使用where的Laravel雄辩查询,php,laravel,laravel-5.3,laravel-eloquent,Php,Laravel,Laravel 5.3,Laravel Eloquent,我有两个模型。状态和详细信息 Status ------ id name slug SaleDetails ----------- id id_statuses //connects it to the status table id_products price qty 我没有定义从状态到细节的任何关系 Status ------ id name slug SaleDetails ----------- id id_statuses

我有两个模型。状态和详细信息

Status
------ 
  id
 name
 slug
SaleDetails
-----------  
  id
  id_statuses //connects it to the status table
  id_products
  price
  qty
我没有定义从状态到细节的任何关系

Status
------ 
  id
 name
 slug
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\u details->where('status.slug','pending')

根据我所使用的:

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

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


最好的方法是什么?

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

要应用where条件,可以使用
whereHas()
like

$status = "pending";

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

我认为,如果您想快速处理,使用查询生成器比使用查询生成器更好。谢谢!在这种情况下,闭包做了什么?我可以阅读文档的哪些部分来了解更多信息?您可以阅读此文档。