Когда я создаю миграцию Laravel5 следующим образом, он добавляет столбец «linkdesc» в качестве первичного ключа. когда я читаю документацию по миграции laravel5, она не упоминает, что $table->text('description');
это дает первичный ключ в базе данных.
Есть ли способ предотвратить такие автоматически добавленные первичные ключи в laravel5?
Также есть ли другие функции миграции, которые дают нежелательные первичные ключи этого типа?
моя миграция выглядит следующим образом
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();
});
Я думаю, что вы неправильно прочитали информацию, которую вы получаете в PhpMyAdmin. У тебя есть primary
слово неактивно без возможности щелкнуть по нему в строке для linkdesc
столбец, и вы думали, что Laravel создает первичный ключ для этого столбца.
Однако истина совсем иная — она неактивна не потому, что Laravel автоматически создал первичный ключ для этого поля, а потому, что это текстовое поле, а текстовые поля не могут быть первичными ключами.
Вы можете проверить это, нажав на PhpMyAdmin на Indexes
— должно быть под таблицей — там вы увидите, что первичный ключ отсутствует linkdesc
колонка.
Других решений пока нет …