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 模型忽略的主要内容,如果未能解决你的问题,请参考以下文章