0

私は Cakephp 2.0 の初心者ですが、2 つのテーブルのビューを作成したいと考えています。次のテーブルがあります。

レコード付きの hpsas: ciname、location、status
レコード付きの ldaps: ciname、status

私のコントローラーには、次の構文があります。

$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 モデルでは、「多対 1」の関係が定義されています。

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

Ldaps モデルでは、「1 対多」の関係が定義されています。

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
)

サンプルで使用したエイリアスについて混乱しないでください。好きな名前を付けることができます。同じモデルの複数の関連付けを処理する必要がある場合に便利です。より詳細に説明されたサンプルは、ドキュメントにあります。

于 2012-08-27T06:01:50.717 に答える