2015-07-24 3 views
0

Когда я создаю миграцию Laravel5 следующим образом, он добавляет столбец «linkdesc» в качестве первичного ключа. когда я прочитал документацию по миграции laravel5, он не упомянул, что $table->text('description'); дает первичный ключ в базе данных. Есть ли способ предотвратить такие автоматически добавленные первичные ключи в laravel5? Также есть ли какие-либо другие функции миграции, которые предоставляют такие нежелательные первичные ключи?Переход laravel 5 добавляет некоторые первичные ключи в мою таблицу базы данных. как предотвратить его?

моя миграция следующим

Schema::create('articles', function (Blueprint $table) { 

     $table->primary(['pemail', 'linkid']); 
     $table->bigInteger('linkid'); 
     $table->string('pemail'); 
     $table->string('linkname'); 
     $table->string('linkurl'); 
     $table->integer('linorder'); 
     $table->text('linkdesc')->nullable(); 


    }); 
+0

Почему вы удаляете стандартный первичный ключ id? –

+0

Я запустил эту миграцию, и все как и ожидалось. Существует составной первичный ключ на pemail и linkid, без ключа на linkdesc. –

+0

@Martin Bean: Я нормализовал все мои таблицы базы данных. поэтому я избавляюсь от всех ненужных столбцов –

ответ

1

Я думаю, что вы неправильно поняли информацию вы получите в PhpMyAdmin. У вас есть primary слово inactive без возможности щелкнуть по нему в строке для столбца linkdesc, и вы подумали, что Laravel создает первичный ключ для этого столбца.

Однако истина совершенно иная - это неактивный не потому, что Laravel автоматически создается первичный ключ для этой области, но потому, что это текстовое поле и тексты поля не могут быть первичными ключами.

Вы можете подтвердить это, когда вы нажмете на PhpMyAdmin на Indexes - он должен быть под столом - там вы увидите, что первичный ключ на столбце linkdesc отсутствует.