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

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

【问题讨论】:

    标签: 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 无法检测到哪一列是主键。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      • 2017-05-07
      • 2019-06-11
      • 2017-10-09
      • 1970-01-01
      • 2020-06-04
      • 2012-11-24
      相关资源
      最近更新 更多