CakePHP-вычисления в виртуальном поле с сортировкой

0

Я хочу создать статус фиктивного поля. Это хранит число от 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
    Имеет ли это смысл
Показать ещё 5 комментариев
Теги:
cakephp

2 ответа

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
0

Просто взглянул на это быстро.

Я бы предложил сделать то, что у вас есть, а затем отсортировать его после факта с помощью CakePHP Set :: sort.

См. Здесь... http://book.cakephp.org/2.0/ru/core-utility-libraries/set.html#Set::sort

Ещё вопросы

Сообщество Overcoder
Наверх
Меню