繁体   English   中英

Phalcon \\ Mvc \\ Model的afterFetch

[英]Phalcon\Mvc\Model's afterFetch

说我有:

class Book extends Model
{
    private $someVar = 1;

    public function afterFetch()
    {
        if ($this->var == 2) $this->doSomething();
    }

    public function setVar($val)
    {
        $this->someVar = $val;
    }

    public function doSomething(){}
}

$book = Book::find($someId);

问题:在上述情况下,如何才能在afterFetch() 中使$ this-> someVar等于2

谢谢!

如果find是一个静态方法,那么您没有太多选择可以在范围之外更改该var,我看到的唯一方法是:

class Book extends Model
{
    private static $someVar = 1;

    public function afterFetch()
    {
        if (self::$someVar == 2) $this->doSomething();
    }

    public static function setVar($val)
    {
        self::$someVar = $val;
    }

    public function doSomething(){}
}

Book::setVar(2);
$book = Book::find($someId);

但是,我再也没有使用过这个框架,所以可能有一些解决方法。

我唯一看到afterfetch方法触发器的时间是当我执行findfirst时

我发现的唯一解决方法是在模型中创建一个将对数据进行迭代的新功能。 并运行您的功能。

我希望在我之前使用查询之前,find实际上会运行此代码,但是可惜,我错了。

我很想找到一个更好的解决方案,但是我能找到的最好的解决方案是制作一种新方法,该方法的作用类似于二次读取并手动调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM