0
基本上,我想建立表「城市」和「圖像」之間的關係。他們都有一個由名爲cities_images的第三個表限制的ID列。這裏是中間表的結構:Many_Many關係失敗,屬性「ClassName.RelationName」未定義
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;
但是這會導致錯誤:
Property "Cities.images" is not defined.
請注意,有一個ID = 2的城市,cityIimages中有一行cityId = 2且imageId = 1。 ID = 1的圖像表中還有一行,所以我不明白爲什麼我無法訪問與給定城市相關的圖像。
這導致PHP警告: 'include(CitiesImages.php)function.include無法打開流:沒有成功h文件或目錄' – 2012-08-16 18:54:38
哦,對。你現在只需要改變你的模型的關係。檢查並讓我知道查詢是否有效。 – 2012-08-16 18:57:04
您還可以將名稱更改爲不同的城市圖像,以減少混淆。然後你可以做你想做的事情:$ cities-> images。如果在Cities.php模型中將模型中的關係名稱從'citiesImages'更改爲'images',則可以這樣做。圖像也一樣。 – 2012-08-16 19:00:51