2011-01-13 7 views
0

ich ein "Motor" Modell haben:cakephp hasMany gibt leeren Datensatz

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

Zusammen mit einem MotorPicture Modell:

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

}

Hier ist die Datenbank:

-- 
-- 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'); 

Wenn ich meine Sicht und pri nt_r ($ Motor) ist der Ausgang so:

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 ()) 

Wie Sie (am Ende dieser langen Sache) sehen kann, ist die „MotorPictures“ Array leer ist, obwohl die SELECT, dass die hasMany Beziehung kehrt erzwingt 2 resultiert in der Debug-Ausgabe.

Kann mir jemand auf die Sache hinweisen, die ich falsch mache oder einfach weglassen?

Danke!

+0

Veröffentlichen Sie den Code des Suchvorgangs Ihres Controllers – Ish

Antwort

0

Wie ich meine Schlüssel und Fremdschlüssel heraus tat nicht genau Spiel. Einer war ein int (10) und der andere war ein int (11). Sobald ich den anderen in meiner Datenbank gefunden hatte, fing alles an zu arbeiten.

0

Ich sehe in Ihrem Motormodell Moter.id = 0000000001 und in Ihrem MotorPicture haben Sie MotorPicture.moder_id=1.

0000000001 ist nicht das gleiche wie 1

0

Oft diese Art der Sache durch eine allzu restriktive Rekursion Einstellung verursacht wird. Versuchen Sie, $ Motor-> recursive = 1 in Ihrem Controller zu setzen, bevor Sie $ Motor-> find aufrufen.