Cakephp Autoconvert find () поля? - PullRequest
       1

Cakephp Autoconvert find () поля?

0 голосов
/ 15 января 2011

В торт php я могу получить поля модели с помощью метода find ().Что если я хочу применить функцию преобразования к полям?Есть ли способ напрямую выполнить эту задачу?

Предположим, у меня есть модель с именем RaceTime с полями racerId и timeMillis

 RaceTime
+------------+
| Field      |
+------------+
| id         |
| racerId    |
| timeMillis |
+------------+

. TimeMillis - это int, определяющий, какДолгая гонка заняла миллисекунды.Очевидно, что говорить, что гонка заняла 15651 миллисекунду, не очень полезно для читателя-человека, и я хотел бы преобразовать это в читаемый человеком формат.

Есть ли способ сделать это непосредственно в find ()?

Или это единственная возможность циклически просмотреть результаты после завершения find ()?

Ответы [ 2 ]

3 голосов
/ 15 января 2011

То, что вы хотите, возможно, используя Виртуальные поля .

Редактировать на примере:

var $virtualFields = array(
    'timeMillisHR' => 'FROM_UNIXTIME(Field.timeMillis)'
);
1 голос
/ 15 января 2011

Если вы хотите преобразовать timeMillis в секунды, вы можете использовать 'fields' => array ('timeMillis / 1000', 'other_fields'), где 'other_fields' представляет другие поля, которые вы хотите получить как часть вашего запроса. Если это сложнее, чем простые математические операции и другие функции SQL, тогда ответ будет:

Если это достаточно распространенное преобразование в вашем проекте и вы не можете найти подходящий метод ни в TimeHelper в NumberHelper, то вы легко можете написать свой собственный помощник.

Вы в значительной степени должны пройтись по каждому экземпляру, который хотите преобразовать.

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