Thanks a lot! Your suggestion solved my problem. Just like you said, I run select query with ascending order, then if the sorting is set to DESC, I run array_reverse on result set. Cheers!:)
On Monday, November 26, 2012 8:10:50 PM UTC+1, cricket wrote: > > 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 <apa...@o2.pl <javascript:>> > 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 cake...@googlegroups.com<javascript:>. > > > To unsubscribe from this group, send email to > > cake-php+u...@googlegroups.com <javascript:>. > > 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 cake-php@googlegroups.com. To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com. Visit this group at http://groups.google.com/group/cake-php?hl=en.