前提・実現したいこと
CakePHP4.0で、同一モデル内で階層データを取得したいのですが、どうしてもうまくいきません。
https://book.cakephp.org/3/ja/orm/behaviors/tree.html
を参照しましたが、理解が追いつきませんでした。
該当のソースコード
SamplesController.php
public function index() { $this->paginate = [ 'contain' => ['ParentSamples'], 'order' => ['lft' => 'asc'], 'limit' => 100, ]; $samples = $this->paginate($this->Samples); $this->set(compact('samples')); }
MySQL内では次のようにフィールドを持っています。
id, parent_id, lft, rhgt, level, name, created, modified
parent_idがnullでない場合は子データを親データにぶら下げて取得したいのですが、どのようにしたらよいでしょうか。何卒ご教示ください。
TreeビヘイビアによるmoveUP/moveDownは動作しています。
###2020/06/04 9:25追記
belongsToではなくhaManyに変更することで、それっぽいデータが取れました。
これでいいのかな。
第2階層までしか取得できなかった。(9:45追記)
SamplesTable.php
// $this->belongsTo('ParentSamples', [ $this->hasMany('ParentSamples', [ 'className' => 'Samples', 'foreignKey' => 'parent_id', ]);
回答1件
あなたの回答
tips
プレビュー