当几个模型ID相同但另一个模型前导零而另一个模型前导零时,我遇到了Laravel关系问题。
Product ID | Productname
-----------|------------
012345 | Product A
12345 | Product B
如果在同一查询中加载了这些关系,则仅返回第一个,而另一个则不返回。
数据库列是字符串,在Product模型中,我将增量设置为false,将id属性转换为字符串。 Laravel急切的加载是否不考虑前导零?
我无法使用前导零来更改这些产品ID。
谢谢!
答案 0 :(得分:0)
我只是在本地laravel安装上进行了测试,无法重现该问题。
您确定这不是查询结构的问题吗?因为如果在程序执行过程中的任何时候,$id
变量都被视为整数,那么将来转换为字符串将删除前导零。
例如,也许您从请求中获得了ID:
$productId = $request->get('product_id');
此时$productId
被认为是整数,因此,如果您使用productId
查询数据库,则前导零将被删除。
您需要确保在请求的生命周期中,该变量永远不会转换为整数。
您可以使用tinker测试正确的查询,并手动获取产品:
Product::find('012345');
Product::find('12345');