[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: По Kohana 3.3.x: что возвращает ORM::loaded();?
nkl
Собственно почему возник такой вопрос:

$reference = ORM::factory('Reference')
->
where('id', '=', $reference_id)
->
find();

$fields = ORM::factory('Fields')
->
where('reference_id', '=', $reference_id);

$data['fields_num'] = $fields -> count_all();

if($fields -> loaded())
{
$fields -> find_all();
}
else
{
$data['errors']['non_fields'] = '';
}

Почему-то выполняется то, что стоит в блоке else. По условию, должно быть наоборот, если данные были загружены if($fields -> loaded()), то должно произойти $fields -> find_all();. Хотя:
$data['fields_num'] = $fields -> count_all();

Возвращает 2, т.е. по этому условию выбирается 2 строки. Что я опять не так делаю?
Invis1ble
Цитата
По условию, должно быть наоборот

не должно, потому что ты только построил запрос, но не выполнил его, а выполняешь его в блоке if (этот код никогда не выполнится)
Даже если find_all ты поместишь до проверки, то все равно метода loaded у Database_Result нет.
Проверять нужно так:
if ($model->count_all()) {
// ...
}

либо если нужна коллекция, то:
$model = ORM::factory('Fields')
->
where('reference_id', '=', $reference_id);

$fields = $model->find_all();

// какой-то код для работы с коллекцией

if (count($fields)) { // или $fields->count()
// ...

}


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

nkl
Спасибо за ответ. Сделал так:

$reference = ORM::factory('Reference')
->
where('id', '=', $reference_id)
->
find();

$fields = ORM::factory('Fields')
->
where('reference_id', '=', $reference_id)
->
find_all();

$data['fields_num'] = count($fields);

if($data['fields_num'] == 0)
{
$data['errors']['non_fields'] = '';
}

$data['reference_name'] = $reference -> name;
$data['fields'] = $fields;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.