Я создал таблицу под названием «пользователи». Есть таблицы с названиями «компании», «обозначения», «отделы». Я хочу добавить столбцы company_id, designation_id, Department_id в таблицу пользователей в качестве внешних ключей.
Я попробовал это, но это не сработало
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->integer('department_id');
$table->integer('company_id');
$table->integer('designation_id');
$table->foreign('department_id')->references('id')->on('departments')->onDelete('restrict')->onUpdate('restrict');
$table->foreign('company_id')->references('id')->on('companies')->onDelete('restrict')->onUpdate('restrict');
$table->foreign('designation_id')->references('id')->on('designations')->onDelete('restrict')->onUpdate('restrict');
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn(['department_id','company_id','designation_id']);
});
}
При переносе миграции отображается эта ошибка.
Освещение \ Database \ QueryException: SQLSTATE [HY000]:Общая ошибка: 1005 Невозможно создать таблицу lanwadb
. users
(номер ошибки: 150 «Неправильно сформировано ограничение внешнего ключа») (SQL: изменить таблицу users
добавить ограничение users_department_id_foreign
ссылки на внешний ключ (department_id
)departments
(id
) при удалении ограничить при обновлении ограничить)
Обозначение миграции следующим образом,
public function up()
{
Schema::create('designations', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestampsTz();
});
}
Миграция отдела следующим образом,
public function up()
{
Schema::create('departments', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->integer('company_id');
$table->timestampsTz();
});
}
```