5.5 resource 资源路由的 :id 为什么有时候会把整型参数判断为字符串,导致出现匹配格式错误?

这里是路由 :

5.5 resource资源路由的 :id 为什么有时候会把整型参数判断为字符串,导致出现匹配格式错误?
5.5 resource资源路由的 :id 为什么有时候会把整型参数判断为字符串,导致出现匹配格式错误?

当我已下面这张方式去提交异步获取订单信息的时候:

5.5 resource资源路由的 :id 为什么有时候会把整型参数判断为字符串,导致出现匹配格式错误?

5.5 resource资源路由的 :id 为什么有时候会把整型参数判断为字符串,导致出现匹配格式错误?

然后控制台异步请求的url:

5.5 resource资源路由的 :id 为什么有时候会把整型参数判断为字符串,导致出现匹配格式错误?

接下去是自己去做了个测试,和之前想的一样,就是php对整型数字过大的时候会对整型做一个科学的计算法:

5.5 resource资源路由的 :id 为什么有时候会把整型参数判断为字符串,导致出现匹配格式错误?

5.5 resource资源路由的 :id 为什么有时候会把整型参数判断为字符串,导致出现匹配格式错误?

所以我想问的是,对于这张订单编号或者是比较大的整型做处理的时候
1:是通过post请求携带参数去传递吗 ? (这样可能会比较乱,因为post之前就是用作新增用的,get才是获取)
2:url设置id为0,然后header里传入真实的数据
3:改变路由规则

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6

有个地方要指错一下,严格意义上来说 不是变为字符串了,而是变为浮点数了。。
file

4年前 评论

可以在 app/Providers/RouteServiceProvider.php 中,将类型转一下:

    public function boot()
    {
        Route::bind('store', function ($value) {
            return Store::query()->where('sid', intval($value))->first();
        });

        parent::boot();
    }
4年前 评论

@varro
我好想发现我的问题在哪里了, 23333 , 我把控制器的接收参数做了一个强类型要求
file
不过挺感谢您提供的方法的,谢谢

4年前 评论

这种超长的整形,我建议就当字符串处理,数据库里也是字符串

4年前 评论

@方圆百里找对手 对的,但是我这边之前的代码习惯做了一个强类型限制,导致出现了这个问题,但是订单这种长度可能是20多位的整型,我在数据库里用CHAR字段固定长度做索引,应该会好点吧。。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!