2017-06-04 25 views
2

私は次のように結束ルートモデルを実装している:Laravel 5.4 - ルートモデル結合条件

ルート:

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

コントローラー:

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

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

これは素晴らしい作品。しかし、プロパティモデルに条件を追加して、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