Возврат конструктора запросов Kohana

У нас есть CMS, написанная на Kohana 2.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,

Может кто-нибудь объяснить, почему это происходит?

Спасибо, Дейв.

0

Решение

В первом примере $obj является результатом find_all() функция, которая является ORM_Iterator вызывается анонимным объектом Product Model.

Но во 2-м примере $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();
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]