簡體   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