1

我有三张桌子:

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(160) DEFAULT NULL,
  PRIMARY KEY (`id`)
)

CREATE TABLE `event` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
)

CREATE TABLE `user_join_event` (
  `user_id` int(10) unsigned NOT NULL,
  `event_id` int(10) unsigned NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (`user_id`,`event_id`),
  CONSTRAINT `user_join_event_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`),
  CONSTRAINT `user_join_event_ibfk_2` FOREIGN KEY (`event_id`) REFERENCES `event` (`id`)
)

图片

UserEvent与by有关系UserJoinEvent

'events' => array(self::MANY_MANY, 'Event', 'user_join_event(user_id, event_id)'),

我想createduser_join_event餐桌上抽时间

4

1 回答 1

4

您无法在具有 many_many 关系的连接表上获得其他属性,但您可以通过 has_many 关系来执行此操作。不要忘记从表 user_join_event 创建一个名为 UserJoinEvent 的模型

模型用户

'userJoinEvent' => array(self::HAS_MANY, 'UserJoinEvent', 'user_id'),
'events' => array(self::HAS_MANY, 'Event', 'event_id', 'through'=>'userJoinEvent'),

模型 UserJoinEvent

'event' => array(self::BELONGS_TO, 'Event', 'event_id'),

Cotroller(示例获取事件的标题和使用 pk 1 从用户创建的日期)

$model = User::model()->findByPk(1);
foreach ($model->userJoinEvent as $item) {
  echo $item->event->title;
  echo $item->created;
}
于 2013-06-21T06:51:55.793 回答