2012-01-06 50 views
1

我有2個日期(創建,更新),我想合併在一個新的列中,選擇最新的日期...我該怎麼做?CakePHP將日期字段合併到最短

下面是創建陣列:

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

現在我需要另一個領域(讓叫它NewDateMessage.NewDate這會從Message.createdateMessage.updatedate最新的日期,這樣我就可以使用$messages[NewDate]視圖後調用它

幫助PLZ ...

Thx!

+0

PLZ傢伙...一些幫助這裏 – RGA 2012-01-07 01:27:48

回答

0

UPDATE:

不難循環的東西數組一樣

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

+0

THX的答案。其實更新是真正的最新日期。但是由於代碼的其他部分,我無法使用MySQL的統計信息(我只是簡化了上面的代碼,使其更易於理解)。我需要一些數組修改代碼,以計算日期創建一個新的「列」......有沒有辦法將Mysql代碼用於已經創建的數組? – RGA 2012-01-06 23:28:40

+0

ANYONE更多PLZ? – RGA 2012-01-07 00:35:44

+0

我真的可以使用一些幫助... – RGA 2012-01-07 01:27:35

相關問題