У меня есть таблица wall_messages со следующими столбцами
id
from_user_id
тема
сообщение
дата
message_reply_id
Я хочу получитьCActiveDataProvider со всеми настенными сообщениями, которые имеют заданное значение для столбца _from_user_id_.Пока все хорошо.
$outgoingMessages = new CActiveDataProvider ('Messages', array (
'criteria' => array (
'condition' => 'from_user_id ='.$userId->id,
),
'pagination' => array (
'PageSize' => 5,
)
));
Теперь мне нужно добавить следующее условие: для тех настенных сообщений с соответствующим значением _from_user_id_ И соответствующим значением _message_reply_id_ я хочу сохранить только одну из этих строк.Который из?Тот, у которого «самая старая» дата.Как я могу это сделать?Я не очень хорошо с SQL запросов, так что это довольно сложно для меня.спасибо!
Я нашел временное решение, которое является полной противоположностью элегантному:
$sentMessages = array();
$alreadyIncludedMessages = array();
foreach ($user->messagesOut as $mess) {
if (!in_array($mess->message_reply_id, $alreadyIncludedMessages)){
$sentMessages[] = $mess;
$alreadyIncludedMessages[]=$mess->message_reply_id;
}
}
$outgoingMessages = new CActiveDataProvider ('Messages', array (
'pagination' => array (
'PageSize' => 5,
),
'data'=>$sentMessages
));