2012-08-26 58 views
0

我是Cakephp 2.0中的新成員,但我想對兩個表進行查看。我有以下表格:Cakephp 2.0 mysql查詢

hpsas與記錄:ciname,位置,狀態
LDAPS與記錄:ciname,狀態

在我的控制器,我有以下的語法:

$this->Hpsa->query("SELECT `hpsas`.`ciname`, `hpsas`.`status`, `ldaps`.`ciname`, `ldaps`.`status` FROM `cmdb`.`hpsas`, `cmdb`.`ldaps` WHERE `hpsas`.`ciname` = `ldaps`.`ciname`;"); 

我預期如下結果:

'hpsas' => array( 
    (int) 0 => array(         
        'hpsas' => array( 
      'ciname' => 'lsrv8001', 
      'status' => 'live' 
     ), 
     'ldaps' => array( 
      'ciname' => 'lsrv8001', 
      'status' => 'indeployment'' 

如何使用正確的CakePHP 2.0語法創建模型和控制器?

+0

這似乎是模糊和廣泛的方法。你可以再詳細一點嗎? – BenOfTheNorth

+0

我想現在如何使用它的模型和控制器在Cakephp中進行這個查詢。結果必須看起來像上面的結果。 – DenVer

+0

您是否正確鏈接了您的模型?隨着hasMany,belongsTo和hasAndBelongsToMany? –

回答

0

不知道你已經完成了什麼以及你的控制器/模型是如何命名的,所以我只是把代碼示例,這可能有助於理解基本的想法。

在Hpsas模型中,「多對一」關係被定義。

class Hpsas extends AppModel { 
    public $belongsTo = array(
     'uniqueAlias1' => array(
      'className' => 'Ldaps', 
      'foreignKey' => 'ciname' 
     ) 
    ); 
/... 

在Ldaps模型中,「一對多」關係被定義。

class Ldaps extends AppModel { 
    public $hasMany = array(
     'uniqueAlias2' => array(
      'className' => 'Hpsas', 
      'foreignKey' => 'ciname' 
     ), 
    ); 
/... 

現在如果Hpsass控制器上執行代碼$this->Hpsas->find('all')你可能會得到如下結果:

array(
    (int) 0 => array(
     'uniqueAlias1' => array(
      //hpsas table row with value 
     ), 
     'uniqueAlias2' => array(
      //ldaps table row where hpsas.ciname = ldaps.ciname 
     ) 
    ), 
     //rest hpsas table rows 
) 

不要混淆別名我在任何你想要的樣本,你可以叫使用。當需要處理同一模型的多重關聯時,它們會很方便。 更詳細的解釋樣本可以在documentation找到。