CakePHP Слияние полей даты с самыми короткими - PullRequest
1 голос
/ 07 января 2012

У меня есть 2 даты (создание, обновление), которые я хочу объединить в новый столбец, выбрав самую новую дату ... как я могу это сделать?

Вот создание массива:

$this->Message= array(
                  'fields' => array('Message.id','Message.type','Message.createdate','Message.updatedate'),
                  'conditions' => $cond);
$messages = $this->Message->find('all', $conditionsMessage);

Теперь мне нужно другое поле (давайте назовем его NewDate) Message.NewDate, которое получает самую новую дату из Message.createdate и Message.updatedate, поэтому я могу вызвать его после в представлении, используя $messages[NewDate]

Помогите, плз ...

Thx!

1 Ответ

0 голосов
/ 07 января 2012

ОБНОВЛЕНИЕ:

Нетрудно зациклить массив с чем-то вроде

foreach($messages as $k => $m){
    if(strtotime($m['Message']['updatedate']) > strtotime($m['Message']['createdate'])){
        $messages[$k]['Message']['NewDate'] = $m['Message']['updatedate'];
    }else{
        $messages[$k]['Message']['NewDate'] = $m['Message']['createdate'];
    }
}

ОРИГИНАЛЬНЫЙ ОТВЕТ:

Я думаю, что ваш Message.updatedate всегда будетбыть самой новой датой, так что вы можете просто выбрать это.Но если по какой-то причине это не так, вы можете создать виртуальное поле в вашей модели:

public $virtualFields = array(
    'NewDate' => "IF(Message.updatedate > Message.createdate, Message.updatedate, Message.createdate)"
);

При этом используется функция MySQL IF().Если вы не используете MySQL, вам придется выяснить, как сделать нечто подобное с вашей базой данных.

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...