Внешний ключ один ко многим (postgresql, php, yii2)

1

Heloo,

Я только начинаю с yii2 и postgresql. У меня проблема:

Первая таблица:

tbl_printer (PK dept_id and id)

| dept_id | id | name |

Вторая таблица

tbl_printer_group (PK dept_id and id)

| dept_id | id | printer1 | printer2 | printer3 |

printer1, printer2, printer3 данные/значение от tbl_printer.id

Я хочу, чтобы "УДАЛИТЬСЯ ОТКАЗЫВАТЬ" tbl_printer IF printer (id) STILL IN USE в tbl_printer_group (принтер1, принтер2, принтер3). Если не правильный внешний ключ, один к одному от родителя к ребенку, но этот для многих.

Как решить эту проблему, я использую php, yii2 и postgresql.

Спасибо и извините за мой английский

Теги:
yii2

1 ответ

0
Лучший ответ

Внешний ключ добавляется посредством миграции с помощью метода addForeignKey():

$this->addForeignKey(
    'name_of_foreign_key_constraint',
    'products',
    'category_id',
    'products_categories',
    'id',
    'CASCADE',
    'CASCADE'
);

Последние два варианта: ON UPDATE и ON DELETE соответственно.

Большинство СУБД поддерживают следующие параметры: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL.

Обратите внимание, что вы можете указать массивы вместо столбцов category_id и id:

Если имеется несколько столбцов, разделите их запятыми или используйте массив.

Framework предоставляет наиболее часто используемые и необходимые для этого методы, но помните, что вы всегда можете выполнять собственный SQL-код внутри миграции только с записью:

$this->execute('YOUR CUSTOM SQL QUERY');
  • 1
    Спасибо арогачев, поэтому я должен написать код в php. Я думаю, что мы можем использовать функции базы данных, такие как внешний ключ .... Большое спасибо за ваш ответ
  • 0
    @mltobing Мы можем использовать методы в миграциях для большинства общих функций базы данных, но фреймворк не может предоставить абстракции для всех конкретных функций базы данных, например PostgreSQL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню