Мне сказали удалить функцию автоинкремента одной из наших таблиц, однако это стало причиной проблем:
PDOException: :( "SQLSTATE [HY000]: Общая ошибка: 3780 Ссылка на столбец limitCardId и ссылочный столбец id в ограничении внешнего ключа roll_control_cards_limitcardid_foreign несовместимы. 1010 *
FK $table->integer('limitCardId')->unsigned()->index();
Отношение $table->foreign('limitCardId')->references('id')->on('limit_cards');
Я прочитал несколько других постов, в которых предлагалось несколько решений, однако ни одна не решила мою проблему, вот список того, что я ' я уже пробовал:
Определив это в моей модели базовой таблицы:
protected $primaryKey = 'id';
public $incrementing = false;
Добавление Schema::disableForeignKeyConstraints();
в начале метода up()
и Schema::enableForeignKeyConstraints();
в конце, я Вы пробежали composer dump-autoload
, php artisan config:clear
, php artisan cache:clear
.
. Как и предполагалось, здесь приведена версия обеих таблиц, базовая таблица:
public function up()
{
Schema::create('limit_cards', function (Blueprint $table) {
$table->integer('id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('limit_cards');
}
Таблица, связанная с данной:
public function up()
{
Schema::create('rolling_control_cards', function (Blueprint $table) {
$table->increments('id');
$table->integer('limitCardId')->unsigned()->index();
$table->unique(['controlCardNumber', 'limitCardId']);
$table->timestamps();
$table->foreign('limitCardId')->references('id')->on('limit_cards');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('rolling_control_cards');
}