Ниже приведены мои миграции
Таблица users связана с таблицей customer
У пользователя:
$table->integer('customer_id')->unsigned();
$table->foreign('customer_id')->references('id')->on('customers');
Когда я звоню php artisan migrate:refresh --seed
, ремесленник дал мне следующую ошибку:
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL
: alter table `users` add constraint `users_customer_id_foreign` foreign ke
y (`customer_id`) references `customers` (`id`))[PDOException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
Потому что таблица клиентов не существует … (очевидно)
Есть ли способ решить эту проблему? Я знаю, что изменение даты файлов исправит это, но должен быть лучший подход
Вы должны создать таблицу, на которую ссылаетесь, прежде чем добавлять внешний ключ. Решением было бы удалить ограничение внешнего ключа из миграции пользовательской таблицы и создать новую миграцию, которая добавляет ограничения внешнего ключа.
Попробуйте сделать это отдельно.
public function up()
{
Schema::create('users', function(Blueprint $table) {
$table->increments('id');
$table->integer('costumer_id')->unsigned();
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
Schema::table('users', function($table) {
$table->foreign('costumer_id')->references('id')->on('costumers');
});
}
Еще одна вещь, которую вы можете попробовать (начиная с версии 5.3):
unsignedInteger('column_name') instead of ('column_name')-unsigned()
Если вы установили одно поле как «Без знака», а другое — нет. После того, как вы установите оба столбца в Unsigned, все заработает