首页 >数据库 >mysql教程 >Laravel 5.2:为什么我的字符串主键转换为 0?

Laravel 5.2:为什么我的字符串主键转换为 0?

Linda Hamilton
Linda Hamilton原创
2024-11-26 01:09:10185浏览

Laravel 5.2: Why is my String Primary Key Converting to 0?

Laravel 5.2:自定义主键转换问题

在 Laravel 5.2 的 Eloquent ORM 中使用字符串作为自定义主键时,您可能会遇到这样的问题:从 key 中检索时键值会转换为 0

说明:

Laravel 自动转换属性值以匹配数据库列类型。默认情况下,自动递增主键被假定为整数。但是,在这种情况下,您使用字符串作为主键,这会导致值转换错误。

解决方案:

要解决此问题,您需要显式指定主键是一个字符串,并且它不应自动递增。为此,请将以下代码添加到您的模型中:

protected $primaryKey = 'your_key_name';
public $incrementing = false;

确保将 'your_key_name' 替换为主键列的实际名称。

进一步说明:

在 Laravel 6.0 及更高版本中,还需要设置 $keyType 属性to 'string':

protected $keyType = 'string';

这明确指定主键是字符串并防止任何潜在的类型转换。

通过实施此解决方案,您将能够使用字符串作为在 Laravel Eloquent 模型中自定义主键,而不会遇到转换问题。

以上是Laravel 5.2:为什么我的字符串主键转换为 0?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn