¿Cómo puedo establecer restricciones únicas en dos columnas?
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
usuario391986
fuente
fuente
id
, le da al marco una sensación de aficionado en los bordes. ¿Estoy despotricando? :-(Respuestas:
El segundo parámetro es establecer manualmente el nombre del índice único. Use una matriz como primer parámetro para crear una clave única en varias columnas.
o (un poco más ordenado)
fuente
array()
. Porque lo intenté sin matriz y no funcionó. ¿puedo dar un nombre de restricción mientras ejecuto la clave compuesta a través del generador de esquemas?table_column1_column2...n_unique
si alguien no está seguro. Dejar caer la restricción única sería hacer referencia a eso en$table->dropUnique('table_column1_column2...n_unique');
Simplemente puedes usar
Referencia: http://laravel.com/docs/master/migrations#creating-indexes
Como ejemplo:
fuente
->unique()
.->unique()
es más apropiado en esta cuestión específica, porque'mytext'
probablemente haría una mala clave como lo haría cualquierVARCHAR
oTEXT
columna.->primary([])
sería excelente para garantizar la unicidad en los enteros, como las claves externas de pivote.fuente