2015-07-10 48 views
0

裏面使用ORM遇到麻煩了我只是跟着Martin Bean的書學習Laravel 5.他開始用路由器講述laravel,並且在使用了一些基本的Route :: get和Route之後: :刪除方法,他給出瞭如何使用Route ::資源的一個非常簡短的例子,他說我讓你自己做這個:)在route :: resource

結構上沒有問題,但我遇到了麻煩,當我試圖在方法內部傳遞ORM。

這裏是我的CatsController.php

namespace firstApp\Http\Controllers; 

use Illuminate\Http\Request; 

use firstApp\Http\Requests; 
use firstApp\Http\Controllers\Controller; 
public function show(\firstApp\Cat $cat) 
{ 
     return $cat; 
     //return view('cats.show')->with('cat', $cat); 
} 

這是我如何使用路由器

Route::resource('cats', 'CatsController'); 

這是我Cat.php

- 
namespace firstApp; 

use Illuminate\Database\Eloquent\Model; 

class Cat extends Model { 
    public $timestamps = false; 
    protected $fillable = ['name', 'date_of_birth', 'breed_id']; 
    public function breed(){ 
    return $this->belongsTo('firstApp\Breed'); 
    } 
} 

當我打電話http://localhost/firstApp/public/cats/2空對象是我得到的..

問題是什麼?

謝謝。

+0

要求鏈接到教程或其他資源是關於SO的話題,所以你應該編輯這個部分(並且你的問題沒有它)。 –

+0

@NathanTuggy你認爲我必須這樣做嗎? –

+0

這是一個近距離投票的誘餌,所以不,你不必,但它肯定會幫助你保持你的問題。或者,嘿,你可以多依賴陌生人的善意,他們不會介意做一件你可以輕鬆做到的事情,對吧? –

回答

0

您正在向show方法注入模型,但未執行任何查詢以獲取結果。

要解決該問題,更改您的代碼是這樣的:

public function show(\firstApp\Cat $cat, $id) 
{ 
    return $cat->find($id); 
} 

注意,在上面的代碼我也注入了$idshow方法,所以當你打http://localhost/firstApp/public/cats/2 URL,2會存儲在這個變量中。

在大多數情況下,Laravel社區的人做同樣的事情如下:

public function show($id) 
{ 
    return \firstApp\Cat::find($id); 
} 

好運。