php - Laravel Eloquent : route model binding not working with multi word table name

标签 php laravel laravel-5 eloquent

我正在使用 ajax 对模型的销毁路径进行删除调用。 一切正常,除了 Controller 与数据库中的相应记录不匹配。

我调用了一个 api/serviceoperations/17 ajax delete 调用,但是如果我以这种方式在我的 Controller 中放置一个 var_dump:

    public function destroy(ServiceOperation $serviceOperation) {
        var_dump($serviceOperation);die;
    }

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

 public 'exists' => boolean false

当然,我有一个名为ServiceOperation模型,它引用表service_operations,具有主键 id,在我的数据库中有一个键为 17 的记录。

为什么 Controller 不将我的 id 解析为数据库中相关记录的路由?


更新(已解决):

模型、 Controller 和迁移是用命令创建的

php artisan make:model -m -c -r App\Models\ServiceOperation

无论如何,laravel 似乎并没有很好地处理多个世界的表名:
虽然上面的命令适用于一个单词表名称(即 App\Model\Service),但它不适用于 2 个或更多,因为它不会自行绑定(bind)路由中传递的模型。

解决方法是在controller中使用输入变量名全部小写。
在我的例子中, Controller 中的自动生成销毁函数是

    public function destroy(ServiceOperation $serviceOperation) {
        //model bind not working
    }

但是模型绑定(bind)不起作用。

将参数更新为小写字符串,解决问题,模型绑定(bind)工作:

    public function destroy(ServiceOperation $serviceoperation) {
        //model bind working
    }

最佳答案

解决方法是在controller中使用输入变量名全部小写。
在我的例子中, Controller 中的自动生成销毁函数是

    public function destroy(ServiceOperation $serviceOperation) {
        //model bind not working
    }

但是模型绑定(bind)不起作用。

将参数更新为小写字符串,解决问题,模型绑定(bind)工作:

    public function destroy(ServiceOperation $serviceoperation) {
        //model bind working
    }

关于php - Laravel Eloquent : route model binding not working with multi word table name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43654601/

相关文章:

php - 使用选择框获取将用于添加为外键 ID 的 ID

php - Laravel 4 - 镜像数据库?

php - Laravel 与多个模型的接口(interface)

php - laravel 如何优化一个表中的简单 where 查询

php - 您的要求无法解析为一组可安装的软件包。 - 拉维尔 5.7

php - Preg_replace : append absolute path to url but exclude data url

php - 无法让 google-api 工作

javascript - 如何获取客户端帖子大小?

php - 将 get 参数添加到 Laravel 的重定向方法中

php - Laravel 5 查询生成器和 NOW() 用于日期比较