2015-07-10 73 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); 
} 

好运。