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:改变路由规则

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 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年前 评论

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