Laravel迁移的 - > unique()函数究竟发生了什么?

时间:2017-11-20 01:55:42

标签: php oop laravel-5

在我的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()??)就像它是一个对象一样。这是怎么回事?

1 个答案:

答案 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();