2011-10-30 6 views
3

どのようにテーブル自体を使用して関連付ける? 私は、CakePHPを使用して、テーブルがセクションです:どのようにテーブル自体を使用して関連付ける?

create table SECTIONS 
(
    SECTIONID   int(11) not null auto_increment, 
    TITLE    char not null, 
    CONTROLID   int(11) not null, 
    SECTIONPARENTID  int(11), 
    primary key (SECTIONID) 
) 

このテーブルは、自身と関連を持っていると私はに属して使用することは、多くの関連を持っていると私のモデルは次のとおりです。

class Section extends AppModel { 
    var $name = 'Section'; 
    var $primaryKey = 'SECTIONID'; 
    var $displayField = 'TITLE'; 
} 

iはを使用しますに属し、には2つのテーブルに多くのアソシエーションがあります。私はこの例では使用できません。 ありがとうございました。

答えて

6

自己参照モデルは、このトリックを知っていれば簡単ですが、あなたはCake命名規則を使用しないことで自分自身をやっているわけではありません。私はあなたが買ってあげるあなたは、クエリなどの$ this - >部 - >(「最初」)を見つけるを実行すると

Class Section extends AppModel { 

    var $belongsTo = array(
    'Parent'=>array(
     'className'=>'Section', 
     'foreignKey'=>'SECTIONPARENTID' 
    ) 
); 

    var $hasMany = array(
    'Children'=>array(
     'className'=>'Section', 
     'foreignKey'=>'SECTIONPARENTID' 
    ) 
); 

} 

:-)あなたのコントロールの外のDataSourceを使用していると仮定します戻り値の配列は次のようになります。

section => array(
    SECTIONID, 
    ... 
    'Parent'=>array(
    'SECTIONID', 
    .... 
), 
    'Children'=>array(
    [0] => array(
     [SECTIONID] 
    ), 
    [1] => array(
     [SECTIONID] 
    ), 
    ... 
) 
) 
関連する問題