2017-01-09 100 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