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中文网其他相关文章!