2014-01-20 93 views
0

我無法隨機返回具有NULL值的變量。CakePHP關聯模型返回null?

我有這個模型關聯結構:

Truck $hasOne Chassis 
Chassis $hasMany Make 
Chassis $hasMany Model 
Truck $hasOne Type 

隨機結果將會對類型或品牌和型號的空結果無效的結果,但其他結果都會有正確的結果..

0 (array) 
Truck (array) 
Chassis (array) 
    id 1 
    make_id 2 
    model_id 2 
    title Basic Chassis 
    description This Basic Chassis is good for a lot of things, but advanced stuff is not one.. 
Truck_make (empty) 
Truck_model (empty) 

1 (array) 
Truck (array) 
Chassis (array) 
    id (null) 
    make_id (null) 
    model_id (null) 
    title (null) 
    description (null) 

在上面你可以看到2輛卡車已經裝上,第一輛車的底盤已經裝上,製造商和車型ID也沒有了,但是沒有車型和型號。另外,第二車輛沒有什麼負擔..

這裏的協會從MySQL工作臺截圖: http://d.pr/i/JgMt

這些是被稱爲查詢。

Query Affected Num. rows Took (ms) Actions 
SELECT `Truck`.`id`, `Truck`.`chassis`, `Truck`.`type`, `Truck`.`title`, `Truck`.`ref`, `Truck`.`hide_truck`, `Truck`.`featured_gallery`, `Truck`.`featured_home`, `Truck`.`created`, `Chassis`.`id`, `Chassis`.`make_id`, `Chassis`.`model_id`, `Chassis`.`title`, `Chassis`.`description`, `Type`.`id`, `Type`.`title`, `Type`.`desc` FROM `douglass_cake`.`trucks` AS `Truck` LEFT JOIN `douglass_cake`.`chassis` AS `Chassis` ON (`Chassis`.`id` = `Truck`.`id`) LEFT JOIN `douglass_cake`.`types` AS `Type` ON (`Type`.`id` = `Truck`.`id`) WHERE 1 = 1  
SELECT `Truck_make`.`id`, `Truck_make`.`make`, `Truck_make`.`hide_make` FROM `douglass_cake`.`truck_makes` AS `Truck_make` WHERE `Truck_make`.`id` = (1)0 
SELECT `Truck_model`.`id`, `Truck_model`.`model`, `Truck_model`.`hide_model` FROM `douglass_cake`.`truck_models` AS `Truck_model` WHERE `Truck_model`.`id` = (1) 
+0

所以我想出了'null'返回,它是mysql的偏移量,但我仍然不明白爲什麼CakePHP調用make和model的錯誤行數。 – Rymn

回答

1

我想通了這個問題。看起來MySQL Workbench編寫的表的偏移量爲2而不是1. Cakephp期待默認的偏移量,所以當行返回到cakephp時,它從1開始讀取,而MySQL被告知從2.Fxes開始。愚蠢的錯誤

+0

@Ryamn我們如何解決這個問題? –