2011-01-13 63 views
0

我有 「電機」 的模式:的CakePHP的hasMany給空數據集

class Motor extends AppModel 
{ 
    var $name = 'Motor'; 
    var $hasMany = array(
         'MotorPictures' => array(
          'className'  => 'MotorPicture', 
          'foreignKey'  => 'motor_id', 
          'dependent'  => true 
         ) 
        ); 
} 

連同MotorPicture模型:

class MotorPicture extends AppModel 
{ 
    var $name = 'MotorPicture'; 
    var $actsAs = array(
     'FileUpload.FileUpload' => array 
     (
     'uploadDir' => 'img/motors', 
     'required' => true 
    ) 
    ); 

}

這裏是數據庫:

-- 
-- Table structure for table `motors` 
-- 

CREATE TABLE IF NOT EXISTS `motors` (
    `id` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT, 
    `make` varchar(64) NOT NULL, 
    `model` varchar(64) NOT NULL, 
    `year` year(4) NOT NULL, 
    `notes` text NOT NULL, 
    `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `edited` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ; 

-- 
-- Dumping data for table `motors` 
-- 

INSERT INTO `motors` (`id`, `make`, `model`, `year`, `notes`, `created`, `edited`) 
VALUES (0000000001, 'Audi', 'S4', 2000, 'This is a freaking sweet car.', '2011-01-11 21:04:00', '0000-00-00 00:00:00'); 

-- -------------------------------------------------------- 

-- 
-- Table structure for table `motor_pictures` 
-- 

CREATE TABLE IF NOT EXISTS `motor_pictures` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `motor_id` int(11) unsigned NOT NULL, 
    `name` varchar(256) NOT NULL, 
    `type` varchar(256) NOT NULL, 
    `size` int(11) NOT NULL, 
    `created` datetime NOT NULL, 
    `modified` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; 

-- 
-- Dumping data for table `motor_pictures` 
-- 

INSERT INTO `motor_pictures` (`id`, `motor_id`, `name`, `type`, `size`, `created`, `modified`) 
VALUES (1, 1, 'kitten.JPG', 'image/jpeg', 80518, '2011-01-12 20:13:55', '2011-01-12 20:13:55'), 
(2, 1, 'kitten-1.JPG', 'image/jpeg', 80518, '2011-01-12 20:15:28', '2011-01-12 20:15:28'); 

當我提出我的看法和pri nt_r($馬達)的輸出是這樣的:

Array ([Motor] => Array ([id] => 0000000001 [make] => Audi [model] => S4 [year] => 2000 [notes] => This is a freaking sweet car. [created] => 2011-01-11 21:04:00 [edited] => 0000-00-00 00:00:00) [MotorPictures] => Array ()) 

正如你可以看到(在那個長長的東西結束),該「MotorPictures」數組是空的,即使選擇的的hasMany關係,強制返回2導致調試輸出。

任何人都可以指向我正在做的事情錯誤或只是簡單地省略?

謝謝!

+0

發佈控制器查找操作的代碼 – Ish 2011-01-14 23:12:05

回答

0

事實證明,我的鑰匙和外鍵沒有恰好與匹配。一個是int(10),另一個是int(11)。一旦我在數據庫中與另一個匹配,這一切都開始工作。

0

我看到你的電機型號Moter.id = 0000000001和你的MotorPicture你有MotorPicture.moder_id=1

0000000001是不一樣的1

0

通常情況下這種事情是由過限制性遞歸設置引起的。在調用$ Motor-> find之前,嘗試在控制器中設置$ Motor-> recursive = 1。