phpMyAdmin 将列设置为主键但 Laravel 模型忽略

Posted

技术标签:

【中文标题】phpMyAdmin 将列设置为主键但 Laravel 模型忽略【英文标题】:phpMyAdmin Sets Column as primarykey but Laravel model ignores 【发布时间】:2016-10-13 16:03:19 【问题描述】:

我在phpmyadmin中设置了'username'列为主键,但是在User模型中没有设置,为什么模型在laravel中从来不把用户名作为主键?

【问题讨论】:

【参考方案1】:

Eloquent 还会假设每个表都有一个名为 id 的主键列。你可以定义一个$primaryKey 属性来覆盖这个约定。

【讨论】:

【参考方案2】:

在您的模型中定义您的自定义主键,如下所示:

protected $primaryKey = "username";

【讨论】:

我必须这样做吗?我已经将 phpmyadmin 中的用户名设置为主键。 是的,在laravel field id设置为主键,如果你想定义自己的主键,你必须像上面那样定义。 是的。 Eloquent / Doctrine DBAL 可以从数据库中读取,但它不检索表信息。当您想要应用特殊元数据时,您必须手动设置模型字段。例如,protected $primaryKey 会将列视为主键。 protected $dates 将改变您作为数组传递的 DateTime/Timestamp 字段。欲了解更多信息:laravel.com/docs/5.2/eloquent#eloquent-model-conventions 但是如果我从 phpmyadmin 更改数据结构,例如:从 int 到 string,laravel 会返回错误吗? 如果数据库中的列结构发生变化,需要刷新迁移,laravel 无法检测到哪一列是主键。

以上是关于phpMyAdmin 将列设置为主键但 Laravel 模型忽略的主要内容,如果未能解决你的问题,请参考以下文章

INSERT IF NOT EXISTS 类型函数供我在不将列转换为主键的情况下使用?

MySQL:如何在 phpMyAdmin 上设置主键?

创建外键时,phpmyadmin 中的外键约束失败

将列从 varchar 更改为 int

你如何定义十进制19.2

无法使用 phpmyadmin 向导将 csv 导入 mysql 数据库