【问题标题】:Kohana query builder returnKohana 查询生成器返回
【发布时间】:2016-05-04 09:27:34
【问题描述】:

我们有一个用 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

有人能解释一下为什么会这样吗?

谢谢,戴夫。

【问题讨论】:

  • 您使用的是 PHP 5.6.21 还是 PHP 7.0.5 ?
  • 我使用的是 PHP 5.5.12
  • $return = $obj->find_all() 的类型是什么;它必须是数据库结果或某种迭代器
  • In2nd 代码 $obj 是 Product Model 的实际 ORM 对象,而不是 find_all 的结果

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


【解决方案1】:

在第一个示例中,$objfind_all() 函数的结果,该函数是由 Product Model 的匿名对象调用的 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();

【讨论】:

  • 哦,可惜我没有意识到这个小错误...非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-01
  • 2015-11-30
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多