Monday, August 26, 2013

Re: a tree with some dependencies



On Tuesday, 20 August 2013 16:25:40 UTC+2, Mohammad Naghavi wrote:
Hi everybody,
I have got a problem that I'm fighting with for a while so I just thought I would ask you for some advice.
I have a tree with parent, child relation. each element on this tree has a relation with another model. what I need is when an entry in the tree is saved, following happens:
 * first: if it has a parent the relation to the second model should be inherited from the parent (not always but under some conditions)
 * second: if the relation to the second model is changed (based on the above condition) then set the same relation for the children

I have tried to do this on the beforeSave. there I can successfully fulfill the first statement above but when I want to set the realtion for children I cant do it efficiently because it is a waterfall effect and not all the children are direct children and basically I have to find a threaded list and go through all of them and change this this realtion for all of them. 

I want to know if there is a possible way to automatically trigger the beforeSave for all the children if the relation to second model is changed for one single object?


To update all children in one sql command

e.g.

    function afterSave() {
        if (your logic here) {
            $this->updateAll(
                array('x_id' => $x),
                array('lft >' => $this->data[$this->alias]['lft'], 'rght <' => $this->data[$this->alias]['rght'])
            );
        }
    }

AD

--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
 
---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.

No comments: