Я планирую преобразовать все данные datetime из базы данных MySQL в дату формата ('d-M-Y'). Я собираюсь сделать это в обратном вызове afterFind(), но мне интересно, как определить тип поля в CakePHP, чтобы я мог создавать условные выражения?
Спасибо заранее!
Сверху моей головы: Model::$_schema
содержит схему для таблицы базы данных, включая тип поля. Это автоматически заполняется Cake с помощью SQL DESCRIBE
запросов. Вы можете просмотреть результаты запроса в обратном вызове afterFind()
и получить доступ к $this->_schema
, чтобы узнать тип поля. Попробуйте debug($this->_schema);
посмотреть, как он структурирован.
Я думаю, что вам нужна функция getColumnType().
Он используется следующим образом:
$fieldType = $model->getColumnType($fieldName);
Подробнее здесь: Документация CakePHP Model:: getColumnType API
from http://php.net/manual/en/function.checkdate.php
<?php
function is_date( $str )
{
$stamp = strtotime( $str );
if (!is_numeric($stamp))
{
return FALSE;
}
$month = date( 'm', $stamp );
$day = date( 'd', $stamp );
$year = date( 'Y', $stamp );
if (checkdate($month, $day, $year))
{
return TRUE;
}
return FALSE;
}
?>