Laravel按型号

时间:2017-12-06 17:30:00

标签: laravel laravel-5

当我尝试编辑数据库中的某些列时,例如1,当我在地址栏上运行此网址时,我尝试调试数据:

http://127.0.0.1:8000/content_category/1/edit

我得到了这个结果:

ContentCategories {#246 ▼
  #table: "contents_categories"
  #guarded: array:1 [▶]
  #connection: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: false
  +wasRecentlyCreated: false
  #attributes: []
  #original: []
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #fillable: []
}

此结果中的数据为null,而且我没有关于id=1

的任何信息

这一列数据存在于数据库中,我用phpmyadmin检查了控制器上的edit函数:

public function edit(ContentCategories $contentCategories)
{
    dd($contentCategories);
}
项目中的

Model

class ContentCategories extends Model
{
    protected $table = 'contents_categories';
    protected $guarded = ['id'];
}

路线:

Route::resource('content_category', 'ContentCategoriesController');

2 个答案:

答案 0 :(得分:1)

您需要更新方法签名才能在此处使用隐式路由模型绑定。

  

“Laravel会自动解析路由或控制器操作中定义的Eloquent模型,其类型提示的变量名称与路径段名称匹配。” Laravel 5.5 Docs - Routing - Implicit Model Binding

public function edit(ContentCategories $content_category)

这会将路径参数名称与类型提示参数名称匹配。这将允许绑定发生。如果没有这些参数名称的匹配,您所拥有的typehinted参数将通过依赖注入被解析为该模型的新实例。它必须解决依赖关系,因此你得到一个新的模型实例,因为它不知道它是你想要绑定的参数。

其他信息:

  

“默认情况下,Route::resource将根据资源名称的”单一化“版本为您的资源路径创建路由参数。”

Laravel 5.5 Docs - Controllers - Resource Controllers - Naming Resource Route Parameters

答案 1 :(得分:0)

在控制器编辑方法中尝试此操作

public function edit($id)
{
    $contentCategories = ContentCategories::find($id);
    dd($contentCategories);
}