Php 在->;中到底发生了什么;用于Laravel迁移的唯一()函数?

Php 在->;中到底发生了什么;用于Laravel迁移的唯一()函数?,php,oop,laravel-5,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');

在我的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的一个对象,该字符串很可能是该类的一个方法,因为它需要参数。我不明白的是,类的一个方法如何可以有一个方法(string('email')->unique()),就好像它是一个对象一样。这里发生了什么?

->unique()在数据库列上放置一个唯一索引,因此两行不能共享同一电子邮件地址

如果您试图用相同的电子邮件保存第二个用户,将导致重复条目异常

如果您在laravel中使用表单请求,则可以设置唯一类型并指定要查看的表-

哦,您可以标记其他方法调用
->string()->unique()->nullable()
的原因是,每个方法都返回原始对象

乙二醇

->unique()在数据库列上放置唯一索引,因此两行不能共享同一电子邮件地址

如果您试图用相同的电子邮件保存第二个用户,将导致重复条目异常

如果您在laravel中使用表单请求,则可以设置唯一类型并指定要查看的表-

哦,您可以标记其他方法调用
->string()->unique()->nullable()
的原因是,每个方法都返回原始对象

乙二醇

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