2016-10-26 14 views
0

これは初心者の質問かもしれませんが、Laravelアプリケーションではあまり理解できないことがあります。 私は経路上にIDを使用しています。私はlaravelを自動的にDB内の対応するオブジェクトを取得しようとしています。これは、一部のモデルに適しています: をルーティングで:Laravelルーティング自動解決パラメータ

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

とコントローラ

public function useProject(Request $request, Project $project) 

で、その後、私はDB

protected 'attributes' => 
    array (size=2) 
     'id' => int 9 
     'name' => string 'test' (length=4) 
    ... 
public 'exists' => boolean true 

からフェッチされた私の "プロジェクト" を持っています異なるモデルで同じルーティング構造を使用しているコードの別の部分では、自動解決が行われないようです。

ルーティング:

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

コントローラー:

public function create(Request $request, TestScenario $scenario){ 

その結果:

protected 'attributes' => 
    array (size=0) 
     empty 
    ... 
    public 'exists' => boolean false 

両方のモデルは、主キーとして "ID" カラムを使用しています。 私は何が欠けていますか?

ありがとうございました!

+0

ルートモデルバインドを実行しようとしていますか? https://scotch.io/tutorials/cleaner-laravel-controllers-with-route-model-binding –

答えて

0

モデルの暗黙的なバインディングを使用しようとしていますので、このsection from the documentationを読むことをお勧めします。

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

そして、あなたのコントローラで:あなたは変数名と一致する必要があり

モデルごとの結合規則として

public function create(Request $request, TestScenario $testscenario){ 
+0

はいいいえ質問を投稿した直後に問題が見つかりました。愚かな間違い:)しかし、助けてくれてありがとう! – Ours

0

ああ、心配しないでください。解決策を見つけました。それは命名の問題です。

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

そして

public function create(Request $request, TestScenario $scenario){ 

パラメータは、同じ名前(つまり、いずれかの "testscenario" または "シナリオ")を持っている必要があります。

関連する問題