id、name、id_parent構造のカテゴリテーブルがあります。私はatk4を使用しており、インデントされたサブカテゴリをドロップダウンして表示したい。だから:アジャイルツールキットのインデントされたカテゴリのドロップダウン
home
---cat1
---cat2
------subcat2.1
------subcat2.2
---cat3 etc
私はこれを改善する方法を見てみたいですが、何か作業をしました。現在、私はhasMany()に基づいて再帰的なSQLクエリを持っています。これは、再クエリーせずに行うことができるように感じます。そして、主な心配は、私は今モデルで定義されたスタイリングを持っているが、私はどのように移動するのか分からないということです。私は自分自身でコントローラの機能を学習しようとしましたが、これまで管理していませんでした。これまでの私のコード:ページで
モデル
<?php
class Model_Category extends Model_Table {
public $table='category';
function init() {
parent::init();
$this->addField('id_parent');
$this->addField('name');
$this->hasMany('Category','id_parent');
}
function tree($prefix='') {
$r=array();
$childs=$this->ref('Category');
foreach($childs as $child) {
$r[$childs->id]=$prefix.$childs['name'];
$r=array_merge($r,$childs->tree($prefix.'---'));
}
return $r;
}
}
:
$f=$this->add('Form');
$m=$this->add('Model_Category');
$m->load(1); // start recursive from home category
$f->addField('dropdown','category')->setValueList($m->tree());
ここでも:http://phpmagister.com/dropdown-with-indented-categories-in-agile-toolkit-16025/ – romaninsh
実際、このソリューションはかなり良いようです。私は木を調査していました。単一のクエリツリーを使いたい場合、これを使うことができます:http://stackoverflow.com/questions/169817/is-it-possible-to-query-a-tree-structure-table-in -mysql-in-a-single-query-to-an。レベルごとにクエリをグループ化できますが、それによってメモリ消費量が増加します。いずれにしてもページ設定が難しい。あなたの解決策を保つ、それは良いです。 – romaninsh
レビューを投稿するのに時間がかかりました。私は実際にlpos/rposカラムでカテゴリを試しました。ただし、lpos/rposカラムを再構築するには再帰が必要です。私はhasMany()再帰でこの再構築のために働いているコードを持っていますが、ここで説明した状況ではこれらのフィールドはありません。 –