2016-02-24 1 views
0

У меня есть класс, который содержит два других классов в своем теле: Отображение типа дата базы данных DateTime или любой другой объект в Phalcon

class Leave 
{ 
/** 
* @var Day 
*/ 
private $fistDay; 
/** 
* @var Day 
*/ 
private $lastDay; 
} 

день является простой контейнер через PHP \ класс Datetime, который реализует некоторая логика об операциях в дни, чтобы сделать код более удобным для чтения.

Когда я определяю тип столбца firstDay в базе данных как 'date', генератор модели phalcon отображает его как 'string', в то время как вместо этого я хотел бы использовать свой собственный класс. Есть ли способ сделать это? Создание другого стола всего за несколько дней, похоже, является излишним ;-)

Cheers.

ответ

0

Чтобы применить форматирование после извлечения данных из базы данных, Phalcon обеспечивает afterFetch метод можно реализовать на модели:

public function afterFetch() 
{ 
    $this->firstDay = new Day($this->firstDay); 
    $this->lastDay = new Day($this->lastDay); 
} 

Я рекомендую посмотреть на documentation, чтобы увидеть некоторые другие события, которые вы можете управлять таким образом.

1

Спасибо @yergo, это было правильное место :) Также необходимо использовать beforeSave() и afterSave(), чтобы снова создать объектную строку перед обновлением записи базы данных.

public function beforeSave() 
{ 
    $this->firstDay = $this->firstDay->getStringDate(); 
    $this->lastDay = $this->lastDay->getStringDate(); 
} 

public function afterFetch() 
{ 
    $this->firstDay = new Day($this->firstDay); 
    $this->lastDay = new Day($this->lastDay); 
} 

public function afterSave() 
{ 
    $this->firstDay = new Day($this->firstDay); 
    $this->lastDay = new Day($this->lastDay); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^