我只是按照Martin Bean的书来了解Laravel 5.他开始用路由器讲授laravel,在使用一些基本的Route :: get和Route :: delete方法后,他给出了一个很简单的例子。使用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 :(得分:0)
您正在将模型注入show
方法,但没有进行任何查询以获得结果。
要解决此问题,请将代码更改为以下内容:
public function show(\firstApp\Cat $cat, $id)
{
return $cat->find($id);
}
请注意,在上面的代码中,我还在$id
方法中注入show
,因此当您点击http://localhost/firstApp/public/cats/2
网址时,2
将存储在此变量中
在大多数情况下,来自Laravel社区的人都做同样的事情:
public function show($id)
{
return \firstApp\Cat::find($id);
}
祝你好运。