2017-01-09 74 views
2

我有两种模式。状态和SaleDetails。Laravel雄辩的查询使用where

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'); 
} 

因此,我想在这里做的就是让所有的订单是其状态一定蛞蝓匹配。 E.g dd($this->sale_details->where('status.slug', 'pending')

与我有什么用这样的:

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

我应该能够基于前端的状态蛞蝓对其进行过滤,但我想只是做它直接从这里开始。

这是什么最好的方法呢?

回答

2

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

要应用where条件就可以使用whereHas()一样,

$status = "pending"; 

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

完美的作品谢谢你更好!关闭在这种情况下做什么?我可以阅读哪些文档的部分内容? –

+2

你可以阅读这份文件。 https://laravel.com/docs/5.3/eloquent-relationships#introduction。 –

-2

我认为,比使用查询生成器,如果你想快速proccess