2016-08-17 22 views
2

ケーキ3のモデルアソシエーションのためにたくさん試しました。テーブルメニューが1つあり、メニューとサブメニューの両方から構成されています。親メニューをその子メニューと結びつけるためには、まだ私はそれをつかむことに成功していません。cakephpの同じテーブル(モデルとサブメニューのコンセプト)のモデルの関連付け3.2

以下私はコードを書いているだけでなく、スクリーンショットを添付しました。 ありがとうございます。

$this->hasMany('Menus', [ 
      'className' => 'Menus', 
      'foreignKey' => 'parent_id', 

     ]); 

これは、コントローラコードであるメニューモデルで

$getListOfAllParentMenus = $this->Menus->find('all')->where(['Menus.parent_id' => 0])->contain('Menus')->order(['Menus.id DESC'])->toArray(); 

結合です。

enter image description here

ありがとうございます。

答えて

2

同じモデルに含めることはできないので、関連するモデルの名前を変更する必要があります。メニューをSubMenusに変更します。

$this->hasMany('SubMenus', [ 
    'className' => 'Menus', 
    'foreignKey' => 'parent_id', 
]); 

$getListOfAllParentMenus = $this->Menus->find('all') 
    ->where(['Menus.parent_id' => 0]) 
    ->contain('SubMenus') 
    ->order(['Menus.id DESC']) 
    ->toArray(); 
+0

はい、それを持って、私は間違い.thankあなた@Objectマニピュレータ – sradha

+0

斐伊川何をした、得、ここで私はそれを行うことができますどのように 、スナップでPARENT_ID 3のために、バインドの別のレベルが必要ですか? @オブジェクトマニピュレータ – sradha

+0

複数の親子関係を持つことができるときは、find threaded..を使用する方が適切です。これを参照してください:http://book.cakephp.org/3.0/en/orm/retrieving- data-and-resultsets.html#finding-threaded-data –

関連する問題