Eloquent 什么时候将字符串主键转换为 0?

Patricia Arquette
发布: 2024-10-19 16:55:02
原创
230 人浏览过

When Does Eloquent Cast a String Primary Key as 0?

Eloquent 自定义主键问题:“verification_token”变为 0

尝试使用字符串作为 Eloquent 表的主键时Laravel 5.2 中,出现了一个意外问题,最初设置为验证令牌的主键在检索表数据时转换为 0。

此行为源于 Laravel Model 类中属性的默认转换。对于具有自动递增 ID 的表,ID 会自动转换为整数。但是,当主键是字符串时,此转换过程会导致键被解释为零。

要解决此问题,请对 Eloquent 模型进行以下调整:

  1. 使用 $primaryKey 显式定义主键:
<code class="php">protected $primaryKey = 'verification_token';</code>
登录后复制
  1. 通过将 $incrementing 设置为 false 来防止自动递增:
<code class="php">public $incrementing = false;</code>
登录后复制
  1. 对于 Laravel 6.0 或更高版本,额外定义 $keyType:
<code class="php">protected $keyType = 'string';</code>
登录后复制

这些修改指示 Laravel 将主键视为字符串而不是整数,确保它保留其原始值获取模型的属性后。

通过实现这些更改,您可以成功使用字符串作为 Eloquent 表中的自定义主键,而不会遇到主键变为 0 的问题。

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

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!