在route :: resource

时间:2015-07-10 00:55:16

标签: php orm laravel-5

我只是按照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时,我得到的是一个空物......

有什么问题?

感谢。

1 个答案:

答案 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);
}
祝你好运。