Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Kohana查询生成器返回_Php_Orm_Kohana_Query Builder_Kohana Orm - Fatal编程技术网

Php Kohana查询生成器返回

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

我们有一个用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_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的结果,真遗憾我没有意识到这个小错误。。。谢谢!哦,真遗憾我没有意识到这个小错误。。。谢谢!