Kohana查询生成器返回

时间:2016-05-04 09:27:35

标签: php orm kohana query-builder kohana-orm

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

$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

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

谢谢,戴夫。

1 个答案:

答案 0 :(得分:2)

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

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

这是正确的方法

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