带有排序的虚拟场中的cakephp计算

时间:2015-01-10 20:40:22

标签: php cakephp

我想创建一个虚拟字段说状态。根据一些计算(如下所示)存储1-5的数字。我该怎么做?我希望这个字段可以排序。我在模型中的位置/方式中编写此代码以使该字段可排序?

if(empty($booksUser['BooksUser']['returned_on_date'])){
    if(date('Y-m-d') > $booksUser['BooksUser']['return_by_date']){
        $booksUser['BooksUser']['status'] = 1;
    } else {
        $booksUser['BooksUser']['status'] =  2;
    }
} else {
    if($booksUser['BooksUser']['returned_on_date'] > $booksUser['BooksUser']['return_by_date']) {
        $booksUser['BooksUser']['status'] = 3;
    } else {
        $booksUser['BooksUser']['status'] = 4;
    }
}

2 个答案:

答案 0 :(得分:0)

快速浏览一下。

我建议你做你所拥有的,然后用CakePHP Set :: sort。

对事件进行排序

参考这里...... http://book.cakephp.org/2.0/en/core-utility-libraries/set.html#Set::sort

答案 1 :(得分:0)

感谢@mark经过一些研究后,我能够创建一个虚拟领域。这是我的查询,我从中创建了status作为虚拟字段

select 
    IF(isnull(returned_on_date), 
            IF(CURDATE() < return_by_date, 1, 2), 
            IF(returned_on_date > return_by_date, 3, 4)
    ) as status 
from books_users