基本上,我想建立表“城市”和“图像”之间的关系。它们都有一个 ID 列,该列受第三个名为 city_images 的表的约束。这是中间表格的结构:
CREATE TABLE IF NOT EXISTS `cities_images` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cityId` int(11) NOT NULL,
`imageId` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `imageId` (`imageId`),
KEY `cities_images_ibfk_2` (`cityId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
ALTER TABLE `cities_images`
ADD CONSTRAINT `cities_images_ibfk_2` FOREIGN KEY (`cityId`) REFERENCES `cities` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `cities_images_ibfk_1` FOREIGN KEY (`imageId`) REFERENCES `images` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
我有两个适用于城市和图像表的模型。
Cities.php 内部的关系:
'citiesImages' => array(self::MANY_MANY, 'CitiesImages', 'cities_images(id,cityId)'),
Images.php 中的关系:
'citiesImages' => array(self::MANY_MANY, 'CitiesImages', 'cities_images(id,imageId)'),
我正在 CitiesController 中尝试使用以下内容进行测试操作:
$cities = Cities::model()->findByPk(2);
var_dump($cities->images);exit;
但这会导致错误:
未定义属性“Cities.images”。
请注意,有一个 ID=2 的城市,并且ities_images 中有一行 cityId=2 和 imageId=1。图像表中还有一行 ID=1,所以我不明白为什么我无法访问与给定城市关联的图像。