Задать вопрос
@Uglik

Foreign key для поля string в laravel?

Здравствуйте

Подскажите можно ли использовать Foreign key для поля с типом string

Имеется таблица со списком стран, в качестве первичного ключа использую string:

Schema::create('countries', function (Blueprint $table) {
            $table->string('id', 3)->unique()->index();
            $table->string('name', 100);
            $table->string('ru_name', 100);
            $table->string('flag', 10)->unique();

            $table->primary('id');
        });


Пытаюсь связать таблицу пользователей со странами и просиживать Foreign key для поля country_id:

Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_name', 40);
            $table->string('last_name', 40);
            $table->string('username', 40)->unique()->index();
            $table->string('email')->unique();
            $table->string('password');
            $table->string('country_id')->index();
            $table->foreign('country_id')->references('id')->on('countries');
            $table->string('user_photo')->nullable();
            $table->string('user_group')->index();
            $table->rememberToken();
            $table->timestamps();
        });


Пытаюсь выполнить миграцию и получаю вот такую вот ошибку

[Illuminate\Database\QueryException]                                                                                                                                  
  SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `users` add constraint `users_country_id_foreign` foreign key (`country_id`  
  ) references `countries` (`id`))
  • Вопрос задан
  • 1504 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Vadimjke
$table->string('country_id')->index();

замени на:

$table->unsignedInteger('country_id')->index();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы