Reputation: 12806
I have a following code:
if($item_id!=0)
{
$conditions = array(
'AND' => array(
array('OR' => array(array('Message.receiver_id' =>$member_id),
array('Message.member_id' =>$member_id))), array('Message.item_id'=>$item_id)));
}
else if($trip_id!=0)
{
$conditions = array(
'AND' => array(
array('OR' => array(array('Message.receiver_id' =>$member_id),
array('Message.member_id' =>$member_id))), array('Message.trip_id'=>$trip_id)));
}
$lastMessage=$this->Message->find('all',array('conditions'=>$conditions),
array('order'=>'Message.id DESC'));
print_r($lastMessage);
The code is returning the desired results.
The only issue is that it is NOT giving the back in DESCENDING ORDER of id
.
What am I doing wrong?
Upvotes: 0
Views: 5552
Reputation: 257
try this:
$lastMessage=$this->Message->find('all', array('conditions' => $conditions,'order'=>array('Message.id' => 'DESC')));
Upvotes: 1
Reputation: 1413
if($item_id!=0)
{
$conditions = array(
'AND' => array(
array('OR' => array(array('Message.receiver_id' =>$member_id),
array('Message.member_id' =>$member_id))
),
array('Message.item_id'=>$item_id)
)
);
}
else if($trip_id!=0)
{
$conditions = array(
'AND' => array(
array('OR' => array(array('Message.receiver_id' =>$member_id),
array('Message.member_id' =>$member_id))
),
array('Message.trip_id'=>$trip_id)
)
);
}
$conditions = array('order' => 'Message.id DESC');
$lastMessage=$this->Message->find('all', array('conditions' => $conditions));
print_r($lastMessage);
Upvotes: -2
Reputation: 9398
The conditions
and the order
keys go in the same array, the correct syntax is
find(
'all',
array(
'conditions'=>$conditions,
'order'=> 'Message.id DESC'
)
);
or
'order' => array('Message.id' => 'desc')
Upvotes: 3