Basic Kohana ORM найти записи - PullRequest
       26

Basic Kohana ORM найти записи

1 голос
/ 17 февраля 2012

Я хочу получить несколько строк из моих баз данных, используя ORM по умолчанию, который есть у Kohana 3, но я не получаю то, что хочу: -)

In my Controller:

$comptes = ORM::factory('compte');
#$comptes->where('empresa_id', '=', 2)->find_all();
$comptes->find_all();

Этот запрос возвращает 169411 строк в моем SQL, но здесь ничего не возвращает. Конечно, я могу ограничить использование where, limit или любым другим, но я экспериментирую с Kohana.

This returns 1
$result = count($comptes);



In my model view:
<?php var_dump($comptes)?>

produces this:
object(Model_Compte)#16 (34) { ["_has_one":protected]=> array(0) { } ["_belongs_to":protected]=> array(0) { } ["_has_many":protected]=> array(0) { } ["_load_with":protected]=> array(0) { } ["_validation":protected]=> NULL ["_object":protected]=> array(14) { ["id"]=> NULL ["empresa_id"]=> NULL ["codi_compte"]=> NULL ["compte"]=> NULL ["tipus"]=> NULL ["saldo_deure"]=> NULL ["saldo_haver"]=> NULL ["saldo"]=> NULL ["nivell"]=> NULL ["ultim_moviment"]=> NULL ["client_id"]=> NULL...

Итак, это модель, но как я могу получить извлеченные данные?

Также на мой взгляд:

foreach ($comptes as $row)
{
 echo "<p>$row->codi_compte</p>";
}
?>

Но я ничего не понимаю ...

спасибо!

EDIT

Это не работает:

$comptes = ORM::factory('compte');
$comptes->find_all();

Но это работает $ comptes = ORM :: factory ('compte') -> find_all ();

Почему?

И это не работает:

$comptes = ORM::factory('compte');
$comptes->where('empresa_id', '=', 2)->find_all();

Но опять же, это работает:

$comptes = ORM::factory('compte')->where('empresa_id', '=', 2)->find_all();

Это примеры из нескольких строк из Kohana Web

Ответы [ 4 ]

2 голосов
/ 17 февраля 2012

Правильный синтаксис для получения всех строк будет:

$comptes = ORM::factory('compte')->find_all();

Затем, чтобы проверить, загружено ли что-то, используйте $comptes->loaded() (не count($comptes)).

Edit:

Чтобы получить строки с помощью оператора where, вы должны написать:

$rows = ORM::factory('compte')->where('empresa_id', '=', 2)->find_all();
1 голос
/ 25 мая 2015
$comptes = ORM::factory('compte');
$comptes->find_all();

Это не работает, потому что вы не присвоили результат find_all () переменной. Вы должны написать:

$comptes = ORM::factory('compte');
$rows = $comptes->find_all();
0 голосов
/ 15 сентября 2013
$comptes = ORM::factory('compte');
$comptes->find_all();

Это не работает, потому что вы используете точку с запятой.точка с запятой означает конец выражения.

Это будет работать нормально, если вы удалите точку с запятой следующим образом:

$comptes = ORM::factory('compte')
->find_all();

Или сделайте только одну строку:

$comptes = ORM::factory('compte')->find_all();
0 голосов
/ 30 августа 2013

Если вы просто хотите разбить его на несколько строк для удобства чтения, это самый простой метод IMO ...

Пример:

$comptes = ORM::factory('compte')
    ->where('empresa_id', '=', 2)
    ->find_all();
...