【问题标题】: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();
});
}