Bagaimana cara menetapkan batasan unik pada dua kolom?
class MyModel extends Migration {
public function up()
{
Schema::create('storage_trackers', function(Blueprint $table) {
$table->increments('id');
$table->string('mytext');
$table->unsignedInteger('user_id');
$table->engine = 'InnoDB';
$table->unique('mytext', 'user_id');
});
}
}
MyMode::create(array('mytext' => 'test', 'user_id' => 1);
// this fails??
MyMode::create(array('mytext' => 'test', 'user_id' => 2);
laravel-4
database-schema
pengguna391986
sumber
sumber
id
, memberikan framework perasaan amatir di tepinya. Apakah saya mengomel? :-(Jawaban:
Parameter kedua adalah mengatur nama indeks unik secara manual. Gunakan array sebagai parameter pertama untuk membuat kunci unik di beberapa kolom.
atau (sedikit lebih rapi)
sumber
array()
. Karena saya mencoba tanpa array dan tidak berhasil. dapatkah saya memberikan nama batasan saat menjalankan kunci komposit melalui pembuat Skema?table_column1_column2...n_unique
jika ada yang tidak yakin. Menghapus batasan unik kemudian akan merujuk pada$table->dropUnique('table_column1_column2...n_unique');
Cukup Anda dapat menggunakan
Referensi: http://laravel.com/docs/master/migrations#creating-indexes
Sebagai contoh:
sumber
->unique()
.->unique()
lebih tepat dalam pertanyaan khusus ini karena'mytext'
mungkin akan membuat kunci yang buruk seperti kolomVARCHAR
atau apa punTEXT
.->primary([])
akan sangat bagus untuk memastikan keunikan pada bilangan bulat seperti kunci asing pivot.sumber