基本的Kohana ORM查找记录

时间:2012-02-17 09:39:01

标签: kohana kohana-3 kohana-orm

我想使用Kohana 3拥有的默认ORM从我的数据库中获取一些行,但我没有得到我想要的东西: - )

In my Controller:

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

此查询在我的SQL中返回169411行,但此处不返回任何内容。当然我可以限制使用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>";
}
?>

但我什么都没得到......

谢谢!

修改

这不起作用:

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

但这很有效      $ comptes = ORM :: factory('compte') - &gt; 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 个答案:

答案 0 :(得分:2)

获取所有行的正确语法是:

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

然后使用$comptes->loaded()(不是count($comptes))检查是否已加载某些内容。

修改

要使用where语句获取行,请编写:

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

答案 1 :(得分:1)

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

这不起作用,因为你没有在变量中分配find_all()结果。 你应该写:

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

答案 2 :(得分:0)

如果你只是想把它分成多行以便于阅读,这是IMO最简单的方法......

示例:

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

答案 3 :(得分:0)

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

这不起作用,因为您使用分号。 分号表示结束语。

如果你删除这样的分号,它将正常工作:

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

或仅将其设为1行:

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