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.


Reply via email to