Laravel Eloquent:路由模型绑定不适用于多字表名称

Giu*_*erv 1 php laravel eloquent laravel-5 laravel-eloquent

我正在用ajax进行删除调用以建立模型的销毁路径。一切正常,除了控制器与数据库中的相应记录不匹配。

我打电话给api/serviceoperations/17ajax 删除电话,但是如果我var_dump以这种方式将a 放入控制器中:

    public function destroy(ServiceOperation $serviceOperation) {
        var_dump($serviceOperation);die;
    }
Run Code Online (Sandbox Code Playgroud)

我得到一个不存在的空模型

 public 'exists' => boolean false
Run Code Online (Sandbox Code Playgroud)

当然,我有一个称为ServiceOperation模型,该模型引用具有主键的表service_operations,并且在我的数据库中有一个带有key的记录。 id17

控制器为什么不解析我的ID到数据库中相对记录的路由?


更新(已解决):

使用以下命令创建模型,控制器和迁移

php artisan make:model -m -c -r App\Models\ServiceOperation
Run Code Online (Sandbox Code Playgroud)

无论如何,laravel似乎无法
很好地处理一个表名而不是一个世界:尽管上面的命令对一个单词表名(即App \ Model \ Service)有效,但对2个或多个表却不起作用它不会自己绑定路由中传递的模型。

解决方案是在控制器中使用所有小写字符的输入变量名称。
就我而言,控制器中的自动生成的销毁功能是

    public function destroy(ServiceOperation $serviceOperation) {
        //model bind not working
    }
Run Code Online (Sandbox Code Playgroud)

但是模型绑定无效。

将参数更新为小写字符串,解决该问题,然后模型绑定起作用:

    public function destroy(ServiceOperation $serviceoperation) {
        //model bind working
    }
Run Code Online (Sandbox Code Playgroud)

Giu*_*erv 5

解决方案是在控制器中使用所有小写字符的输入变量名称。
就我而言,控制器中的自动生成的销毁功能是

    public function destroy(ServiceOperation $serviceOperation) {
        //model bind not working
    }
Run Code Online (Sandbox Code Playgroud)

但是模型绑定无效。

将参数更新为小写字符串,解决该问题,然后模型绑定起作用:

    public function destroy(ServiceOperation $serviceoperation) {
        //model bind working
    }
Run Code Online (Sandbox Code Playgroud)