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
。
有人可以解释为什么会这样吗?
谢谢,戴夫。
在第一个示例中,$obj
是 find_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();
我们有一个用 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
。
有人可以解释为什么会这样吗?
谢谢,戴夫。
在第一个示例中,$obj
是 find_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();