Php Kohana查询生成器返回
我们有一个用Kohana 2.3.x编写的CMS(是的,我们知道它是一个旧版本)。 当我像这样使用查询生成器时:Php Kohana查询生成器返回,php,orm,kohana,query-builder,kohana-orm,Php,Orm,Kohana,Query Builder,Kohana Orm,我们有一个用Kohana 2.3.x编写的CMS(是的,我们知道它是一个旧版本)。 当我像这样使用查询生成器时: $obj = ORM::factory('product')->where(array_of_wheres)->find_all() $obj = ORM::factory('product'); if($something) $obj->where(array_of_wheres); else $obj->where(array_of_ot
$obj = ORM::factory('product')->where(array_of_wheres)->find_all()
$obj = ORM::factory('product');
if($something)
$obj->where(array_of_wheres);
else
$obj->where(array_of_other_wheres);
$obj->find_all();
然后,$obj
将是一个ORM\u迭代器
但当我写这样的东西时:
$obj = ORM::factory('product')->where(array_of_wheres)->find_all()
$obj = ORM::factory('product');
if($something)
$obj->where(array_of_wheres);
else
$obj->where(array_of_other_wheres);
$obj->find_all();
然后,$obj
将是一个产品模型
,而不是ORM\u迭代器
有人能解释为什么会这样吗
谢谢,Dave。在第一个示例中,
$obj
是find_all()
函数的结果,该函数是对产品模型的匿名对象调用的ORM_迭代器
但在第二个示例中,$obj
是产品模型的ORM对象。当您调用find_all函数时,它会以ORM_迭代器的形式返回结果,而不会修改原始对象
下面是正确的方法
$model = ORM::factory('product');
if($something)
$model->where(array_of_wheres);
else
$model->where(array_of_other_wheres);
$obj = $model->find_all();
在第一个示例中,$obj
是find_all()
函数的结果,该函数是在产品模型的匿名对象上调用的ORM_迭代器
但在第二个示例中,$obj
是产品模型的ORM对象。当您调用find_all函数时,它会以ORM_迭代器的形式返回结果,而不会修改原始对象
下面是正确的方法
$model = ORM::factory('product');
if($something)
$model->where(array_of_wheres);
else
$model->where(array_of_other_wheres);
$obj = $model->find_all();
您使用的是PHP5.6.21还是PHP7.0.5?我使用的是PHP5.5.12$return=$obj->find_all()的类型是什么;它必须是DB result或某种迭代器2,代码$obj是产品模型的实际ORM对象,而不是find_Alla的结果您使用的是PHP5.6.21还是PHP7.0.5?我使用的是PHP5.5.12$return=$obj->find_all()的类型是什么;它一定是DB result或某种迭代器代码$obj是产品模型的实际ORM对象,而不是find_allOh的结果,真遗憾我没有意识到这个小错误。。。谢谢!哦,真遗憾我没有意识到这个小错误。。。谢谢!