Php 在route::resource内部使用ORM时遇到问题

Php 在route::resource内部使用ORM时遇到问题,php,orm,laravel-5,Php,Orm,Laravel 5,我只是跟着马丁·比恩的书去了解拉威尔5号。他开始用路由器教授laravel,在使用了一些基本的Route::get和Route::delete方法之后,他给出了一个关于如何使用Route::resource的非常简短的示例,他说我让你自己来做:) 在结构上没有问题,但是当我试图在方法内部传递ORM时遇到了麻烦 这是我的CatsController.php namespace firstApp\Http\Controllers; use Illuminate\Http\Request; use

我只是跟着马丁·比恩的书去了解拉威尔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
我得到的是一个空对象

有什么问题


谢谢。

您正在将模型注入到
show
方法中,但没有执行任何查询以获得结果

要解决此问题,请将代码更改为以下内容:

public function show(\firstApp\Cat $cat, $id)
{
    return $cat->find($id);
}
请注意,在上面的代码中,我还将
$id
注入
show
方法,因此当您点击
http://localhost/firstApp/public/cats/2
URL,
2
将存储在此变量中

在大多数情况下,来自Laravel社区的人会做如下相同的事情:

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

祝你好运。

询问教程或其他资源的链接是离题的,所以你可能应该编辑掉这部分内容(你的问题没有它)。@Nathantugy你认为我必须这么做吗?现在这是一个接近投票的诱饵,所以不,你不必这样做,但它肯定会帮助你的问题保持开放。或者,嘿,你可以更多地依靠陌生人的友善,他们不会介意做一些你自己也能轻松做到的事情,对吧?@Nathantugy我很抱歉可能会有误解,因为英语不是我的母语。。很抱歉