为了账号安全,请及时绑定邮箱和手机立即绑定

laravel 中的更新方法将在数据库中创建一个新模型

laravel 中的更新方法将在数据库中创建一个新模型

PHP
湖上湖 2022-05-27 09:59:53
我在 laravel restful api 构建中遇到问题,和 route/api.php 如下:Route::resource('kittrans','Kittrans\KittransController',['except'=>['index']]);当我请求更新数据库中的对象时,问题是一个新模型将使用 $kittrans->save() 方法插入到表中!!为什么会出现这个问题?我从邮递员那里得到的请求是这样的:网址:myApp.test/kittrans/5003方法:放置,补丁内容类型:application/x-www-form-urlencoded数据:item_id,kmo_id,countdd($kittrans);我还在save() 方法之前添加 了以下内容:Kittrans {#345#fillable: array:4 [0 => "count"1 => "kmo_id"2 => "item_id"3 => "user_id"]#connection: null#table: null#primaryKey: "id"#keyType: "int"+incrementing: true#with: []#withCount: []#perPage: 15+exists: false+wasRecentlyCreated: false#attributes: array:3 ["item_id" => "1""kmo_id" => "1""count" => "7"]#original: []#changes: []#casts: []#dates: []#dateFormat: null#appends: []#dispatchesEvents: []#observables: []#relations: []#touches: []+timestamps: true#hidden: []#visible: []#guarded: array:1 [0 => "*"]}为什么保存方法要在数据库中创建一个新的模型实例?我在所有其他控制器中实现了更新方法,一切正常,但是对于这个控制器,我不明白问题出在哪里?
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

模型绑定的控制器方法的参数未正确命名。

您的路线参数kittran不是kittrans;资源路由将使用资源的单数名称作为路由参数。您必须为绑定匹配该名称:

public function update(Request $request, Kittrans $kittran)

如果没有该匹配,您只会注入一个新的模型实例,而不是发生模型绑定。

您可以运行route:list命令来查看您的路线是如何定义的:

php artisan route:list

“Laravel 会自动解析路由或控制器操作中定义的 Eloquent 模型,其类型提示的变量名称与路由段名称匹配。” - Laravel 6.x 文档 - 路由 - 路由模型绑定 - 隐式绑定

“默认情况下,Route::resource将根据资源名称的“单一化”版本为您的资源路由创建路由参数。” - Laravel 6.x 文档 - 控制器 - 资源控制器 - 命名资源路由参数

如果您想为此资源覆盖此行为,并将kittrans其用作参数名称,您也可以这样做,那么您无需更改控制器方法的签名:

Route::resource('kittrans', 'Kittrans\KittransController', [

    'except'=> ['index'],

    'parameters' => ['kittrans' => 'kittrans'],

]);


查看完整回答
反对 回复 2022-05-27
?
白板的微信

TA贡献1883条经验 获得超3个赞

我相信您的模型绑定不正确,当您的模型绑定错误时,Kittrans 对象将为空并且不会保存到数据库中,当您填充并保存时它将保存一个新对象。要解决错误的模型绑定,请将其添加到RouteServiceProvider.php.


use App\Kittrans;


public function boot()

{

    parent::boot();


    Route::model('kittrans', Kittrans::class);

}


查看完整回答
反对 回复 2022-05-27
  • 2 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信