Model::_findThreaded() uses Set::nest() to create the threaded array. So, perhaps the simplest approach would be to use 'ASC' by default, then test for $sort _after_ you get the results back. To switch to descending order for just the parent comments, run the result through array_reverse().
On Mon, Nov 26, 2012 at 5:10 AM, Anna P <[email protected]> wrote: > Hello. > > I got problem with setting up an order for child elements different than for > parent elements. > I have a blog with comments. Users can switch between comments order - > comments can either be sorted descending or ascending. > The problem is, when the order is set to descending, also the child elements > are sorted descending. That way, the child comments which are answers to > parent comments are also shown in a way that the newest one is on top. And I > would like to order the child elements by ascending way, even when parents > are sorted descending. > > I tried to use IF statement in order clause like this: > > if($sort=='desc') { > $order='IF parent_id IS NULL THEN created desc ELSE created asc END'; > } else { > $order='created asc'; > } > $comments=$this->Comment->find('threaded',array('conditions'=>array('post_id'=>$p['Post']['id']), > 'fields'=>array('Comment.id','parent_id','comment','created'), > 'order'=>$order)); > > but I get an error: > Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an > error in your SQL syntax; check the manual that corresponds to your MySQL > server version for the right syntax to use near 'parent_id IS NULL THEN > created END desc, IF parent_id IS NOT NULL THEN id END as' at line 1 > > I've read somewhere that the DESC and ASC cannot be used inside IF or CASE > statement. How else could the default ordering for whole table be changes to > another only for child elements? > > Regards & thank you in advance for help. > > -- > 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 post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > Visit this group at http://groups.google.com/group/cake-php?hl=en. > > -- 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 post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. Visit this group at http://groups.google.com/group/cake-php?hl=en.
