资讯专栏INFORMATION COLUMN

谈谈我是如何为 Laravel 贡献源码

Baaaan / 2012人阅读

摘要:事情的起源是因为在调试一段模型事件时出现的,当时随便往数据库里插入了一段字符串,而不是标准的。然后发现我的模型事件中查找不到当前的模型。进一步查看,这个整数大小,很熟悉,觉得应该是整数类型大小溢出了。

起源

办法总比困难多,所以发现问题比解决问题更难得到。

事情的起源是因为在调试一段模型事件时出现的,当时随便往数据库里插入了一段字符串 ID,而不是标准的 uuid。然后发现我的模型事件中查找不到当前 ID 的模型。

当然,我们不可能总是能遇到问题,也有可能遇到了问题是自己的错误,这时候可以去Laravel的问题库看一下自己有什么能解决的问题

进展

先排除了自己本身代码中的错误,然后一步一步调试



打印了一下返回变量,发现belongsToMany::sync方法返回的 ID 并不正确。

进一步查看,这个整数大小,很熟悉,觉得应该是整数类型大小溢出了。然后看了一下源码InteractsWithPivotTable::caseKey

基本确定就是整形数字溢出了,这里只是简单的根据变量类型进行强转,因为 PHP 是弱类型语言,所以当长字符是一个数字字符串时,将导致无法得到正确的结果。

但我在模型中已经设置了主键类型为字符串,这不应该是我想要的结果。

然后我向框架提了一个issues

Laravel 的组织成员tillkruss 告诉我可以提交一个 PR

然后自己马上行动起来,说实话解决这个问题很简单,因为只要获取主键类型,然后进行强转即可

马上提交了代码,之后被驳回,原来是忘记了写测试代码

查看了一下其他数据库的测试代码,找了一个比较符合我的写了一个数据库的测试。提交。成功合并。

具体修改的代码,可以查看这里 5.7 Improve the return value of the caseKey method

结束

第一次为大型项目提交PR,确实感觉到不能这么随意。

写代码的时候请明确解释这段代码的原因,你会发现框架当中很多很多的注释

千万不要忘记写测试文件

当你提交PR的时候,请详细描述你本次做了什么改动,增加了什么新功能。

尽情的表达你的想法,社区有很多人会帮助你的

最后欢迎加入Laravel学习交流群,群号:584453488

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28703.html

相关文章

  • Laravel框架门面Facade源码分析

    摘要:容器主要的作用就是生产各种零件,就是提供各个服务。的原理我们以为例,来讲解一下门面的原理与实现。当运行时,发现门面没有静态函数,就会调用这个魔术函数。我们看到这个魔术函数做了两件事获得对象实例,利用对象调用函数。 前言 在开始之前,欢迎关注我自己的博客:www.leoyang90.cn这篇文章我们开始讲 laravel 框架中的门面 Facade,什么是门面呢?官方文档: Facade...

    wanghui 评论0 收藏0
  • Laravel核心解读--控制器

    摘要:下面是刚才说的这些步骤对应的核心代码收集路由和控制器里应用的中间件我们在前面的文章里已经详细的解释过中间件和路由的原理了,接下来就看看当请求最终找到了路由对应的控制器方法后是如何为控制器方法注入正确的参数并调用控制器方法的。 控制器 控制器能够将相关的请求处理逻辑组成一个单独的类, 通过前面的路由和中间件两个章节我们多次强调Laravel应用的请求在进入应用后首现会通过Http Ker...

    fxp 评论0 收藏0
  • 分享AI有道干货 | 126 篇 AI 原创文章精选(ML、DL、资源、教程)

    摘要:值得一提的是每篇文章都是我用心整理的,编者一贯坚持使用通俗形象的语言给我的读者朋友们讲解机器学习深度学习的各个知识点。今天,红色石头特此将以前所有的原创文章整理出来,组成一个比较合理完整的机器学习深度学习的学习路线图,希望能够帮助到大家。 一年多来,公众号【AI有道】已经发布了 140+ 的原创文章了。内容涉及林轩田机器学习课程笔记、吴恩达 deeplearning.ai 课程笔记、机...

    jimhs 评论0 收藏0
  • 你知道这5年我怎么过的吗!谈谈我做测试开发的这些年……【总结】

    摘要:而且,据说他的大女儿和小女儿都是做测试的,这是名副其实的测试世家。确定测试需求相应的测试方法获得测试策略方案。负责这一领域测试质量保证开发内的整个开发生存周期业务。 ...

    silenceboy 评论0 收藏0
  • SegmentFault 社区访谈 | mcfog:自由进出 Coding && A

    摘要:上次的访谈,介绍了下可爱的依云酱,回忆传送门。这里简单地介绍下龙女仆,全名小林家的龙女仆,为什么介绍这部剧呢因为设计狮颜值同学也安利了这部。剧情简介在独身又劳累的小林划重点一名程序员身边突然出现的穿着女仆服装的美少女托尔。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的访谈,介绍了下可爱的依云酱,回忆传送门。不...

    neroneroffy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<