2017-06-04 103 views
2

我已經實現路徑模型,結合如下:Laravel 5.4 - 路徑模型,綁定條件

路線:

Route::get('property/{property}', '[email protected]'); 

控制器:

public function view(Property $property) 
{ 
    $data = compact([ 
     'property' 
    ]); 

    return view('property.view', $data); 
} 

這個偉大的工程。不過,我想向Property模型添加一個條件來檢查active = 1。我如何以及在哪裏做這件事?

+1

你有什麼試過的?你基本上是問如何使用if語句... – sisve

+0

有沒有辦法在模型中做到這一點,而不是控制器? – GSTAR

+0

該文檔提到了顯式綁定;這會爲你工作嗎? https://laravel.com/docs/5.4/routing#explicit-binding – sisve

回答

0

您可以註冊一個顯式綁定。將以下代碼添加到RouteServiceProvider。當分段爲property時,這將應用於模型綁定。

Route::bind('property', function ($id) { 
    return \App\Property::where('id', $id) 
     ->where('active', 1) 
     ->firstOrFail(); 
}); 

如果您需要對每個結果全局應用此條件,則可以改爲添加全局範圍。 https://laravel.com/docs/5.4/eloquent#global-scopes