Schema::create('users', function (Blueprint $table) {<br>
$table->primary('email');<br>
$table->string('name');<br>
$table->string('image_url');<br>
$table->string('signin_with');<br>
});
以上是我的数据库架构。
以下是我的用户型号。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Users extends Model
{
protected $table = 'users';
public $incrementing = false;
protected $primaryKey = 'email';
protected $fillable = [
'email', 'name' ,'image_url', 'signin_with'
];
}
现在我的问题是我想制作电子邮件&#39;属性作为users表中的主键。但是我得到了
的错误QueryException SQLState [42S01]。
我该如何解决?
提前谢谢你。
答案 0 :(得分:0)
主键用于链接到其他表,字符串比较比int比较慢。
如果将用户信息存储在多个表中,则users表的外键将是电子邮件地址。
这意味着您多次存储电子邮件地址。 因此,不使用电子邮件作为主键,而是使用自动递增的主键。
答案 1 :(得分:0)
在您的用户架构中:
$table->increments('id');
$table->string('email')->unique();
在需要用户
的模型中$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
您在索引字段上有外键。无需在Users表的此字段上使用主键。