2017-11-20 6 views
0

次の行があります:のより大きな文脈の中Laravelの移行で - > unique()関数で正確に何が起こっていますか?設定私の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(); 
    }); 
} 

私は$表はクラスのオブジェクトであることを理解Blueprint、その文字列はパラメータをとるため、そのクラスのメソッドである可能性があります。私が理解できないことは、クラスのメソッドがオブジェクトであるかのようにメソッド(string( 'email') - > unique()??)を持つ方法です。ここで何が起こっているのですか?

答えて

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(); 
関連する問題