Básico Kohana Orm Encuentra registros
-
27-10-2019 - |
Pregunta
Quiero obtener algunas filas de mis bases de datos utilizando el ORM predeterminado que tiene Kohana 3, pero no estoy obteniendo lo que quiero :-)
In my Controller:
$comptes = ORM::factory('compte');
#$comptes->where('empresa_id', '=', 2)->find_all();
$comptes->find_all();
Esta consulta devuelve 169411 filas en mi SQL, pero aquí no devuelve nada. Por supuesto, puedo limitar el uso de dónde, límite o lo que sea, pero estoy experimentando lo básico con 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...
Entonces, este es el modelo, pero ¿cómo puedo obtener los datos obtenidos?
También en mi opinión:
foreach ($comptes as $row)
{
echo "<p>$row->codi_compte</p>";
}
?>
Pero no tengo nada ...
¡Gracias!
EDITAR
Esto no funciona:
$comptes = ORM::factory('compte');
$comptes->find_all();
Pero esto funciona $ comptes = orm :: factory ('compte')-> find_all ();
¿Por qué?
Y esto no funciona:
$comptes = ORM::factory('compte');
$comptes->where('empresa_id', '=', 2)->find_all();
Pero de nuevo, esto funciona:
$comptes = ORM::factory('compte')->where('empresa_id', '=', 2)->find_all();
Estos ejemplos de múltiples líneas son de Web Kohana
Solución
La sintaxis correcta para obtener todas las filas sería:
$comptes = ORM::factory('compte')->find_all();
Luego, para verificar si se ha cargado algo, use $comptes->loaded()
(no count($comptes)
).
Editar:
Para obtener filas usando una where
declaración, escribirías:
$rows = ORM::factory('compte')->where('empresa_id', '=', 2)->find_all();
Otros consejos
$comptes = ORM::factory('compte');
$comptes->find_all();
Esto no funciona porque no asignó el resultado Find_All () en variables. Deberías escribir :
$comptes = ORM::factory('compte');
$rows = $comptes->find_all();
Si solo desea dividirlo en múltiples líneas por el bien de la legibilidad, este es el método más simple en mi opinión ...
Ejemplo:
$comptes = ORM::factory('compte')
->where('empresa_id', '=', 2)
->find_all();
$comptes = ORM::factory('compte');
$comptes->find_all();
Esto no funciona porque usas Semicolon. Semicolon significa final de declaración.
Funcionará bien si borra una semicolon así:
$comptes = ORM::factory('compte')
->find_all();
O hazlo como 1 línea solamente:
$comptes = ORM::factory('compte')->find_all();