FuelPHPでもTree Behavior

CakePHPにはTree BehaviorとTree Helperといった便利なものがあります。
詳しくは、
CakePHPの「OrderedBehavior」と「TreeBehavior」はマジで使うべき
とかを参照してもらうとして、
簡単にツリー構造を使いたい!といった要求から
こんなものを作ってしまいました。

FuelPHP TreeOrm Package

しかしながら、未だ要素の追加、削除、親IDの変更しか作っていませんが…

使い方

設置

次の位置においてください

FuelPHP TreeOrm Package

/fuel/packages/treeorm

config.phpを編集

treeormとormをAPPPATH/config/config.php の always_load の部分に追加します

return array(
    'always_load' => array(
        'packages' => array(
            'orm', // 追加
            'treeorm', // 追加
        ),
    )
);

該当のモデルにovserversやフィールド等の追加

use Orm\Model;

class Model_Testtree extends Model
{
    protected static $_properties = array(
		'lft',
		'rght',
		'parent_id',
	);

	protected static $_observers = array(
		'TreeOrm\\Observer_Tree' => array(
			'events' => array('before_save','before_delete'),
		),
	);
}

こいつを使うには必要なフィールドがあります。

`id` int unsigned NOT NULL auto_increment,
`parent_id` int unsigned default '0',
`lft` int(10) default '0',
`rght` int(10) default '0',
PRIMARY KEY (`id`)

これで、とりあえず使えるようになるはず

ソースを見ていただければわかるのだが、非常に汚いし、機能も全然ないのでそのうち綺麗に作り込む予定