关系开头为零的Laravel问题

时间:2019-05-31 10:32:28

标签: laravel laravel-5.5 eager-loading leading-zero

当几个模型ID相同但另一个模型前导零而另一个模型前导零时,我遇到了Laravel关系问题。

Product ID | Productname  
-----------|------------ 
012345     | Product A
12345      | Product B

如果在同一查询中加载了这些关系,则仅返回第一个,而另一个则不返回。

数据库列是字符串,在Product模型中,我将增量设置为false,将id属性转换为字符串。 Laravel急切的加载是否不考虑前导零?

我无法使用前导零来更改这些产品ID。

谢谢!

1 个答案:

答案 0 :(得分:0)

我只是在本地laravel安装上进行了测试,无法重现该问题。

您确定这不是查询结构的问题吗?因为如果在程序执行过程中的任何时候,$id变量都被视为整数,那么将来转换为字符串将删除前导零。

例如,也许您从请求中获得了ID:

$productId = $request->get('product_id');

此时$productId被认为是整数,因此,如果您使用productId查询数据库,则前导零将被删除。

您需要确保在请求的生命周期中,该变量永远不会转换为整数。

您可以使用tinker测试正确的查询,并手动获取产品:

Product::find('012345');
Product::find('12345');