dan, thanks for this post, it helped me out alot with the Tree behavior (struggled with that code for 2 days, lol)
On 6/19/07, danfreak <[EMAIL PROTECTED]> wrote: > > > Hey Max, > > well behaviours are great in terms of code reusability. > They stand to modules as components stand to controllers. > > Just a small example. If you checked out Cake 1.2 you might have > noticed the Tree behaviour. > The Tree behaviour helps to handle situations that deel with commplex > hierarchical data > (have a look at > http://www.sitepoint.com/article/hierarchical-data-database/2) > > In the specific case of the Tree behaviour, some methods might be > common to several models. In order to do not duplicate code, it is > therefore better to have a class with some methods that can be re-used > in several situations. > > To use behaviours, in a model just add the following variable on top. > ----------------------------------------------------- > var $actsAs = array('Tree'); // <-- for the Tree Behaviour > ----------------------------------------------------- > In this specific example, every time you add a new record, the Tree > Behaviour will fill in the rght, and lft field of your database table > depending on the parent tree in the hierarchy (+ it will do more stuff > in case you delete or mode the item from a certain node of the tree) > > Try out this model (you bake a Trees_controller and relative views) > > ------------------------------------------------------------------------------------------------ > Tree.php > > ------------------------------------------------------------------------------------------------ > <?php > class Tree extends AppModel { > > var $name = 'Tree'; > var $actsAs = array('Tree'); > > var $belongsTo = array( > 'Parent' => > array('className' => 'Tree', > 'foreignKey' => > 'parent_id', > 'conditions' => '', > 'fields' => '', > 'order' => '', > 'counterCache' => '' > ), > > ); > > } > ?> > > ------------------------------------------------------------------------------------------------ > DB TABLE > > ------------------------------------------------------------------------------------------------ > CREATE TABLE `trees` ( > `id` int(11) NOT NULL auto_increment, > `name` varchar(200) NOT NULL, > `parent_id` int(11) default NULL, > `lft` int(11) default NULL, > `rght` int(11) default NULL, > PRIMARY KEY (`id`) > ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---
