【问题标题】:Set email as a primary key in laravel在 laravel 中将电子邮件设置为主键
【发布时间】:2021-05-12 18:58:55
【问题描述】:

我想在 laravel 迁移中创建一个电子邮件作为主键而不是 id,我已经尝试过。

public function up()
{
  Schema::create('users', function (Blueprint $table) {
      $table->increments('id');
      $table->primary('email');
  });
}

我遇到如下错误:

SQLSTATE[42703]:未定义列:7 错误: 关系“用户”的“电子邮件”列不存在(SQL:alter table “用户”添加主键(“电子邮件”))

【问题讨论】:

标签: php laravel migration laravel-8


【解决方案1】:

电子邮件通常不用作主键,这样做是一个坏习惯。如果你仍然想这样做,你可以这样做:

{
 Schema::create('users', function (Blueprint $table) {
     $table->increments('id');
     $table->string('email')->primary();
  });
 }

请注意,不推荐!

【讨论】:

    【解决方案2】:

    不建议使用电子邮件作为主键,这被认为是一种不好的做法。但是,如果您想这样做,您可以进行以下迁移:

    {
     Schema::create('users', function (Blueprint $table) {
         $table->increments('id');
         $table->string('email')->primary();
      });
     }
    

    但是,如果您需要每个用户的电子邮件是唯一的,并且需要将 id 作为主键这是一种更好的做法,您可以执行以下操作:

    {
     Schema::create('users', function (Blueprint $table) {
         $table->string('email')->unique();
      });
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 2019-03-29
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多