Я написал в своем контроллере условный фильтр, работающий так:
$this->_view = View::factory('crud/index')
->bind('collection', $collection);
$collection = ORM::factory($this->_model);
if (Request::current()->method() === Request::POST)
{
foreach (Request::current()->post('filter') as $field => $value)
{
$collection->where($field, '=', $value);
}
}
$collection->find_all();
И в представлении у меня есть условное отображение сообщения, если в базе данных нет отфильтрованных результатов или строк.
<?php if ( ! $collection->count()): ?>
Это дает мне исключение:
Kohana_Exception [ 0 ]: Invalid method count called in Model_Product
Проблема в том, что до добавления фильтра мое действие контроллера было:
$this->_view = View::factory('crud/index')
->bind('collection', $collection);
$collection = ORM::factory($this->_model)->find_all();
И $collection->count()
работал простохорошо в представлении.Почему метод ORM find_all () возвращает модель, даже если я не публикую ее, даже если код не входит в условное выражение?Простое разбиение $collection = ORM::factory($this->_model)->find_all();
на $collection = ORM::factory($this->_model);
и $collection->find_all();
разрушает все это.Почему это странное поведение?Спасибо.