代码之家  ›  专栏  ›  技术社区  ›  mocniak

将数据库日期类型映射到\datetime或Phalcon中的任何其他对象

  •  0
  • mocniak  · 技术社区  · 9 年前

    我有一个类,它的主体中包含另外两个类:

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

    Day是php\Datetime类上的一个简单容器,它实现了一些关于Day操作的逻辑,使代码更易于阅读。

    当我将数据库中firstDay列的类型指定为“date”时,phalcon模型生成器将其映射为“string”,而我想使用自定义类。有办法吗?在几天内再做一张桌子似乎有些过分;-)

    干杯

    2 回复  |  直到 9 年前
        1
  •  1
  •   mocniak    9 年前

    谢谢@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);
    }
    
        2
  •  0
  •   yergo    9 年前

    为了在从数据库提取数据后应用一些格式,Phalcon提供了一个 afterFetch 可以在模型上实现的方法:

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

    我建议调查 documentation 要查看其他可以通过这种方式管理的事件。