Kohana 查询生成器 return

Kohana query builder return

我们有一个用 Kohana 2 编写的 CMS。3.x(是的,我们知道它是旧的)。 当我像这样使用查询生成器时:

$obj = ORM::factory('product')->where(array_of_wheres)->find_all()

$obj 将是 ORM_Iterator

但是当我这样写的时候:

$obj = ORM::factory('product');
if($something)
    $obj->where(array_of_wheres);
else
    $obj->where(array_of_other_wheres);
$obj->find_all();

$obj 将是 Product_Model 而不是 ORM_Iterator

有人可以解释为什么会这样吗?

谢谢,戴夫。

在第一个示例中,$objfind_all() 函数的结果,该函数是对产品模型的匿名对象调用的 ORM_Iterator

但在第二个示例中,$obj 是产品模型的 ORM 对象。当您调用 find_all 函数时,它 returns 结果为 ORM_Iterator 它不会修改原始对象。

这是正确的做法

$model = ORM::factory('product');
if($something)
    $model->where(array_of_wheres);
else
    $model->where(array_of_other_wheres);
$obj = $model->find_all();