基本的なKohana ormはレコードを見つけます
-
27-10-2019 - |
質問
Kohana 3が持っているデフォルトのORMを使用して、データベースからいくつかの行をフェッチしたいのですが、私は自分が望むものを手に入れていません:-)
In my Controller:
$comptes = ORM::factory('compte');
#$comptes->where('empresa_id', '=', 2)->find_all();
$comptes->find_all();
このクエリは私のSQLで169411行を返しますが、ここでは何も返されません。もちろん、私は場所、制限などを使用することを制限することができますが、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>";
}
?>
しかし、私は何も得られません...
ありがとう!
編集
これはうまくいきません:
$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
解決
すべての行を取得する正しい構文は次のとおりです。
$comptes = ORM::factory('compte')->find_all();
次に、何かがロードされているかどうかを確認します $comptes->loaded()
(いいえ count($comptes)
).
編集:
を使用して行を取得するには where
声明、あなたは書くでしょう:
$rows = ORM::factory('compte')->where('empresa_id', '=', 2)->find_all();
他のヒント
$comptes = ORM::factory('compte');
$comptes->find_all();
find_all()が変数を割り当てなかったため、これは機能しません。あなたは書くべきです:
$comptes = ORM::factory('compte');
$rows = $comptes->find_all();
読みやすさのために複数の行に分解したい場合、これは最も単純な方法です...
例:
$comptes = ORM::factory('compte')
->where('empresa_id', '=', 2)
->find_all();
$comptes = ORM::factory('compte');
$comptes->find_all();
セミコロンを使用するため、これは機能しません。セミコロンは声明の終わりを意味します。
このようなセミコロンを消去した場合、それは正常に動作します:
$comptes = ORM::factory('compte')
->find_all();
または1行のみにしてください:
$comptes = ORM::factory('compte')->find_all();
所属していません StackOverflow