2013-09-30 4 views
1

Есть ли способ создать отношения автоматически?Как создать отношения автоматически в Yii?

CREATE TABLE `user` (`id` BIGINT AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, PRIMARY KEY(`id`)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = INNODB; 


CREATE TABLE `profile` (`id` BIGINT AUTO_INCREMENT, `user_id` BIGINT, `photo` VARCHAR(255), INDEX `user_id_idx` (`user_id`), PRIMARY KEY(`id`)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = INNODB; 


ALTER TABLE `profile` ADD CONSTRAINT `profile_user_id_user_id` FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE CASCADE; 

Когда я создаю модель через gii, она не связывает отношения.

ответ

0

Сначала создайте отношение в своей базе данных, добавив внешние ключи в нужные поля. Если вы дадите Gii создать модель после того, как вы это сделали, она должна распознать внешние ключи, и она добавит отношения, основанные на внешних ключах, которые вы настроили, к модели.

Если это не так, отправьте свою модель после создания с помощью Gii.

+0

У меня уже есть отношение, оно не работает. ALTER TABLE 'profile' ADD CONSTRAINT' profile_user_id_user_id' FOREIGN KEY ('user_id') ССЫЛКИ' user' ('id') ON DELETE CASCADE; – user2632980

+0

Можете ли вы разместить свою модель? Что создано Gii? – davey

0

Создайте отношения между вашей таблицей в db. Убедитесь, что основные и внешние ключи правильно определены. Когда ваша БД готова, используйте gii-инструмент для создания своих моделей, и он автоматически создаст отношения. Убедитесь, что вы проверяете, так как иногда это испортит отношения, особенно отношения 1: n, n: n, и вам, возможно, придется немного отредактировать (но мотивы времени он будет работать правильно. Кроме того, если вы используете mysql make sure table engine innodb или отношения не будут работать.

Смежные вопросы