2014-01-30 63 views
1

我有以下模型與他們之間的以下關係(我剛剛發佈有關他們的相關信息)。奇怪的數據結構返回查找查詢

Persona.php

public $hasMany = array(
    'PersonaHasLdaphost' => array(
     'className' => 'PersonaHasLdaphost', 
     'foreignKey' => 'persona_id' 
    ) 
); 

Ldaphost.php

public $hasMany = array(
    'PersonaHasLdaphost' => array(
     'className' => 'PersonaHasLdaphost', 
     'foreignKey' => '__ldaphosts_id', 
     'dependent' => false 
    ) 
); 

PersonaHasLdaphost.php

public $belongsTo = array(
    'Persona' => array(
     'className' => 'Persona', 
     'foreignKey' => 'persona_id', 
    ), 
    'Ldaphost' => array(
     'className' => 'Ldaphost', 
     'foreignKey' => '__ldaphosts_id', 
    ) 
); 

我還有其他的型號,甚至假面本身,與這種關係只是工作精細。

但與那些親人,當我查詢與查找數據庫:

$this->Persona->Behaviors->load('Containable'); 
$options = array('conditions' => array('Persona.' . $this->Persona->primaryKey => $id), 
    'contain' => array(
     'Personaacceso', 
     'Personainterna', 
     'PersonaHasLdaphost' => array('Ldaphost')), 
    'recursive'=>1); 
$persona = $this->Persona->find('first', $options); 

我得到這個奇怪的輸出繼電器:

["PersonaHasLdaphost"]=> array(2) { 
    [0]=> array(4) { 
     ["id"]=> string(3) "154" 
     ["persona_id"]=> string(3) "315" 
     ["Ldaphost"]=> array(0) {} 
     ["PersonaHasLdaphost"]=> array(1) { 
     [0]=> array(1) { 
      ["__ldaphosts_id"]=> string(2) "41" 
     } 
     } 
    } 
    [1]=> array(4) { 
     ["id"]=> string(3) "174" 
     ["persona_id"]=> string(3) "315" 
     ["Ldaphost"]=> array(0) {} 
     ["PersonaHasLdaphost"]=> array(1) { 
     [0]=> array(1) { 
      ["__ldaphosts_id"]=> string(3) "120" 
     } 
     } 
    } 
} 

當它應該是這樣的:

["PersonaHasLdaphost"]=> array(2) { 
    [0]=> array(4) { 
     ["id"]=> string(3) "154" 
     ["persona_id"]=> string(3) "315" 
     ["__ldaphosts_id"]=> string(2) "41" 
     ["Ldaphost"]=> array(0) {} 
    } 
    ... 

當然,在「Ldaphost」中有數據,因爲這些ID在ldaphost表中有一個條目。

所以任何人都可以給我一個提示,爲什麼會發生這種情況?我看不出爲什麼這個人比其他人有不同的結果。

回答

0

我終於設法解決了它。

似乎cakePHP不喜歡處理以雙下劃線開頭的數據庫表和/或列名:__ldaphosts表和__ldaphosts_id。

一旦我有兩個名字試圖修改,我的數據是正確返回:

["PersonaHasLdaphost"]=> array(1) { 
    [0]=> array(4) { 
     ["id"]=> string(3) "165" 
     ["persona_id"]=> string(3) "455" 
     ["ldaphosts_id"]=> string(3) "120" 
     ["Ldaphost"]=> array(8) { 
     ["id"]=> string(3) "120" 
     ["hostname"]=> string(7) "xxxx" 
     ["ip"]=> string(14) "xxx.xx.xxx.xxx" 
     ["mac"]=> string(17) "xx:xx:xx:xx:xx:xx" 
     ["tipo"]=> string(6) "server" 
     ["encendible"]=> bool(false) 
     ["apagable"]=> bool(false) 
     ["descripcion"]=> string(24) "xxxxxxxxxxxxxxxxxxxxxxx" 
     } 
    } 
}