laravel - 关系前导零的Laravel问题
问题描述
当几个模型 id 相同但另一个具有前导零而另一个没有时,我遇到了 Laravel 关系的问题。
Product ID | Productname
-----------|------------
012345 | Product A
12345 | Product B
如果在同一个查询中加载了这些关系,则只会返回第一个,而不会返回另一个。
数据库列是字符串,在 Product 模型中,我已将递增设置为 false 并将 id 属性强制转换为字符串。Laravel 的热切加载不考虑前导零吗?
我无法用前导零更改那些产品 ID。
提前致谢!
解决方案
我只是在本地 laravel 安装上运行测试,但无法重现该问题。
您确定这不是您构建查询的方式的问题吗?因为如果在您的程序期间的任何时候$id
变量被视为整数,将来转换为字符串将删除前导零。
例如,也许您从请求中获取 id:
$productId = $request->get('product_id');
此时$productId
被认为是一个整数,所以如果您使用productId
查询您的数据库,前导零将被删除。
您需要确保在请求的生命周期内,该变量永远不会转换为整数。
您可以使用tinker测试正确的查询,并手动获取您的产品:
Product::find('012345');
Product::find('12345');
推荐阅读
- php - 如何从我的下拉数组中获取选定的值
- javascript - 所有元素子元素作为选择选项
- c# - 尝试对链表进行合并排序并获得 stackoverflow 异常。我该如何防止呢?
- postgresql - 如何在不使用窗口函数的情况下计算 Postgresql 中的中值?
- windows - OpenAL 和 Windows 10。设备始终是“通用软件”和“通用硬件”
- java - 如何使用 AWS Java SDK 获取所有 AWS 资源标签详细信息?
- php - 将复杂的 MySQL 查询空间计算转换为 Laravel Eloquent ORM 查询
- swift - 播放完成后在 AVAudioPlayerNode 上调用 stop() 会导致崩溃
- mysql - Sphinx Config:添加在 MySQL 数据库中找不到的手动列
- html - 如何删除网页上的空白区域?