Domanda

Voglio prendere alcune righe dei miei database utilizzando l'ORM predefinito che Kohana 3 ha, ma io non sto ottenendo quello che voglio: -)

In my Controller:

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

Questa query restituisce 169411 righe nel mio SQL, ma qui non restituisce nulla. Certo che posso limitare usando dove, limitare, o qualsiasi altra cosa, ma sto sperimentando le basi 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...

Quindi questo è il modello, ma come posso ottenere i dati recuperati?

Anche a mio avviso:

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

Ma io non capisco niente ...

grazie!

Modifica

Questo non funziona:

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

Ma questo funziona $ Comptes = ORM :: factory ( 'compte') -> find_all ();

Perché?

E questo non funziona:

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

Ma ancora una volta, questo funziona:

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

Questo multi-linee esempi fanno riferimento a Kohana Web

È stato utile?

Soluzione

La sintassi corretta per ottenere tutte le righe potrebbe essere:

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

Poi, per verificare se qualcosa è stato caricato uso $comptes->loaded() (non count($comptes)).

Modifica

Per ottenere le righe utilizzando una dichiarazione where, si può scrivere:

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

Altri suggerimenti

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

Questo non funziona perché l'avete fatto non assegnare find_all () risultato in una variabile. Si dovrebbe scrivere:

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

Se si desidera solo per una scomposizione in più righe per l'amor di leggibilità, questo è il metodo più semplice IMO ...

Esempio:

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

Questo non funziona perché si usa il punto e virgola. mezzo punto e virgola fine dell'istruzione.

Si lavorerà bene se si cancella il punto e virgola in questo modo:

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

O renderlo il più 1 linea unica:

$comptes = ORM::factory('compte')->find_all();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top