在我的laravel设置中的create_users_table.php迁移中,有以下行:
$table->string('email')->unique();
在更广泛的背景下:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
我知道$ table是Blueprint类的一个对象,该字符串很可能是该类的一个方法,因为它接受参数。我不明白的是,一个类的方法如何有一个方法(字符串('电子邮件') - > unique()??)就像它是一个对象一样。这是怎么回事?
答案 0 :(得分:2)
- > unique()在数据库列上放置一个唯一索引,因此2行不能共享同一个电子邮件地址。
如果您尝试使用相同的电子邮件保存第二个用户,则会导致重复的条目异常
如果您在laravel中使用表单请求,则可以设置唯一类型并指定要查看的表格 - https://laravel.com/docs/5.5/validation#rule-unique
哦,你可以标记其他方法调用->string()->unique()->nullable()
的原因是因为每个方法都返回原始对象。
EG
class my_object {
public function string($name) {
$this->name = $name;
return $this;
}
public function other_method() { // do nothing }
}
$myObject = new my_object();
$myObject->string('sdfsdf')->other_method();