0

我是 Cakephp 2.0 的新手,但我想查看两个表。我有以下表格:

带有记录的 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 语法制作模型和控制器?

4

1 回答 1

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'
        ),
    );
/...

现在,如果$this->Hpsas->find('all')在 Hpsass 控制器上执行代码,您可能会得到以下结果:

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
)

不要对我在示例中使用的别名感到困惑,您可以随意命名。当需要处理同一模型的多重关联时,它们会派上用场。可以在文档中找到更详细的解释示例。

于 2012-08-27T06:01:50.717 回答