Автоинкремент Laravel на неосновном поле - PullRequest
0 голосов
/ 18 декабря 2018

Есть моя миграция.Я хочу, чтобы поле id было автоматически увеличено, но не первично.Является ли это возможным?Эта миграция выдает исключение Syntax error or access violation: 1075 Incorrect table definition; there can be only one auto column and it must be defined as a key

Schema::create('tests', function (Blueprint $table) {
    $table->increments('id');
    $table->unsignedInteger('project_id');
    $table->unsignedInteger('model_id'); 
    $table->timestamps();

    $table->dropPrimary('id');

    $table->foreign('project_id')
        ->references('id')
        ->on('projects')
        ->onDelete('cascade');

    $table->primary(['project_id', 'model_id']);
});

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Это не ошибка Laravel, а ошибка MySQL.Как говорится в сообщении об ошибке: it must be defined as a key.Вы отбрасываете ограничение primaryKey на столбец id.Попробуйте установить его в качестве индекса.

попробуйте следующее $table->unsignedInteger('id')->index()->autoIncrement();.Это сделает его целым числом AI, а также индексом, но не PK.

0 голосов
/ 18 декабря 2018

Это не Laravel ошибка.Вы не можете иметь два столбца автоинкремента в таблице MySQL.(конечно, если вы используете mysql), но я думаю, что ни одна из реляционных баз данных не дает вам возможности иметь два столбца с автоинкрементом.

Но есть и другой способ сделать это.посмотрите на этот вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...