Laravel Eloquent查询使用where

时间:2017-01-09 04:48:20

标签: php laravel laravel-5.3 laravel-eloquent

我有两个型号。状态和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匹配的所有订单。 E.g dd($this->sale_details->where('status.slug', 'pending')

用我所拥有的:

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

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

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

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

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

$status = "pending";

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

答案 1 :(得分:-2)

我认为,如果您想要快速处理

,则优于使用查询构建器