如何保存一系列范围以多次重复使用它

时间:2012-08-09 16:27:50

标签: pointers orm scope yii

我想写代码的方式:

$chain = Articles::model()->visible()->childOf($teleshow_id);
echo $chain->count( $criteria ); 
// 1st echo - will write the amount of visible articles, 
// which are children of $teleshow_id

echo $chain->count( $criteria ); 
// this echo will write the amount of all articles

但我想得到echo s的相同结果。

是否有任何解决方案可以保持$ chain持久(不使用指向Articles :: model()的指针 - > visible() - > childOf($ teleshow_id))

1 个答案:

答案 0 :(得分:0)

您可以尝试以下内容:

// in your Articles class
private $_chain;

public function getChain($teleshow_id = false)
{
    if(!isset($this->_chain))
    {
        $chain = Articles::model()->visible()->childOf($teleshow_id);
    }
    return $this->_chain;
}

然后从控制器中调用它:

$model = new Articles();
$chain = $model->getChain($teleshow_id);

$model->chain->count();

或类似的东西。如果你想让你的电话更容易,你可能需要把getChain静态化,但是你应该能够开始使用它。