【问题标题】:Saving data from a Cake3 entity从 Cake3 实体保存数据
【发布时间】:2016-05-23 19:52:40
【问题描述】:

我正在努力通过实体方法将数据保存到我的数据库中,但我不确定我缺少什么。

我有一个方法,它为我提供了一个虚拟字段,显示报价还剩多少时间。这适用于显示值。我想扩展它,以便当剩余时间为 0 时,状态字段从 1 更改为 4 以指示它已过期。

这是我目前所拥有的,它似乎可以工作,但状态值在设置后似乎没有保存。

此功能用于显示剩余时间

protected function _getRemaining(){
    if($this->status === 1 || $this->status === 'Live'){
        // Get various timestamps
        $now = strtotime(Time::now());
        $created = strtotime($this->created);
        $duration = $this->duration;

        // Get the time remaining
        $remaining = (($created + $duration) - $now);

        // If below 0 set the value to 0
        if($remaining < 0){
            $remaining = 0;
            $this->_setStatusAuto(4);
        }
    } else {
        $remaining = 0;
    }
    return $remaining;
}

这是我试图更改状态值的地方。它返回正确的值,但数据库值没有改变!

protected function _setStatusAuto($level){
    $this->set('status', $level);
    return $this->status;
}

任何朝着正确方向轻推都会很棒,谢谢。

【问题讨论】:

    标签: php cakephp model-view-controller cakephp-3.0


    【解决方案1】:
    $this->set('status', $level);
    

    用于将数据从控制器发送到视图,而不是模型/数据库。您需要使用此处描述的方法: http://book.cakephp.org/3.0/en/orm/saving-data.html

    【讨论】:

    • 虽然您可能正确地认为 OP 需要实际保存数据,但 set 是基本实体类/特征的一种方法。
    • 我不确定你的意思。我自己是 CakePHP 的新手,我主要浏览这个部分,看看我是否可以提供帮助并获得一些经验。愿意解释“基础实体类/特征”吗?
    • @Berry 我已经阅读了 book.cakephp.org/3.0/en/orm/saving-data.html 上的文档。除非我遗漏了什么,否则这一切似乎都是为了从控制器中保存东西。我找不到任何关于从模型/实体中保存的信息。虽然我认为您对$this-&gt;set 的看法是正确的
    • @ndm 你的权利,我想做的是保存数据。这可以从实体类中做到吗?
    • @KevWilson 看来您不知道如何保存数据,实体是愚蠢的数据容器,它们不保存数据,表对象可以。我建议您研究有关该主题的文档:book.cakephp.org/3.0/en/orm/saving-data.html
    【解决方案2】:

    先创建模型对象,然后再设置属性


    $model->save();


    【讨论】:

    • 有趣的建议,所以我可以从模型中创建模型对象?
    猜你喜欢
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多