Задать вопрос
Ответы пользователя по тегу Yii
  • Как выбрать всех адресатов из базы сообщений?

    RUgaleFF
    @RUgaleFF
    SELECT 
      `pm`.*,
      `recipient`.* 
    FROM
      `private_message` `pm` 
      LEFT OUTER JOIN `user` `recipient` 
        ON (
          `pm`.`recipient_id` = `recipient`.`id`
        ) 
    WHERE `sender_id` = 5 
    GROUP BY `recipient_id` 
    ORDER BY `pm`.`create` ASC;
    


    Вот SQL решение для моей схемы. Подогнать под Yii проблем составить не должно.
    В модели юзеров:
    public function relations()
    {
    return array(
    'lastMessage' => array(self::HAS_ONE, 'PrivateMessage', 'recipient_id', 'order' => 'lastMessage.time DESC'),
    'messages' => array(self::HAS_MANY, 'PrivateMessage', 'recipient_id', 'order' => 'lastMessage.time DESC'),
    }
    


    Выбирать как:
    $criteria->with = array('messages' => array('with' => 'recipient'), 'lastMessage');
    $criteria->group = 'recipient.id';
    


    Что-то вроде того
    Ответ написан