Как я могу установить уникальные ограничения для двух столбцов?
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
user391986
источник
источник
id
, придают фреймворку дилетантское ощущение по краям. Я разглагольствую? :-(Ответы:
Второй параметр - вручную установить имя уникального индекса. Используйте массив в качестве первого параметра для создания уникального ключа для нескольких столбцов.
или (немного аккуратнее)
источник
array()
. Потому что я пробовал без массива, и это не сработало. Могу ли я указать имя ограничения при запуске составного ключа через построитель схем?table_column1_column2...n_unique
если кто-то не уверен. Опуская ограничение уникальности будет затем ссылки , что в$table->dropUnique('table_column1_column2...n_unique');
Просто вы можете использовать
Ссылка: http://laravel.com/docs/master/migrations#creating-indexes
Например:
источник
->unique()
.->unique()
это более уместно в этом конкретном вопросе, потому'mytext'
что, вероятно, будет иметь плохой ключ, как и любой столбецVARCHAR
илиTEXT
.->primary([])
отлично подходит для обеспечения уникальности целых чисел, таких как внешние ключи сводной таблицы.источник