基本 Kohana ORM 查找记录
我想使用 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网页
I want to fetch some rows from my databases using the default ORM that Kohana 3 has, but I'm not getting what I want :-)
In my Controller:
$comptes = ORM::factory('compte');
#$comptes->where('empresa_id', '=', 2)->find_all();
$comptes->find_all();
This Query returns 169411 rows in my SQL, but here returns nothing. Of course I can limit using where, limit, or whatever, but I'm experimenting the basics with 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...
So this is the model, but how I can get the fetched data?
Also in my view:
foreach ($comptes as $row)
{
echo "<p>$row->codi_compte</p>";
}
?>
But I don't get nothing ...
thanks!
EDIT
This doesn't work:
$comptes = ORM::factory('compte');
$comptes->find_all();
But this works
$comptes = ORM::factory('compte')->find_all();
Why?
And this doesn't work:
$comptes = ORM::factory('compte');
$comptes->where('empresa_id', '=', 2)->find_all();
But again, this works:
$comptes = ORM::factory('compte')->where('empresa_id', '=', 2)->find_all();
This multi-lines examples are from Kohana Web
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
获取所有行的正确语法是:
然后检查是否已加载某些内容,使用
$comptes->loaded()
(而不是count($comptes)
) 。编辑:
要使用
where
语句获取行,您可以编写:The correct syntax to get all the rows would be:
Then to check if something has been loaded use
$comptes->loaded()
(notcount($comptes)
).Edit:
To get rows using a
where
statement, you would write:这不起作用,因为您没有将 find_all() 结果分配给变量。
你应该写:
This doesnt work because you didn't assign find_all() result in a variables.
You should write :
如果您只是为了可读性而想将其分成多行,那么这是最简单的方法……
示例:
If you just want to break it down into multiple lines for readability's sake, this is the simplest method IMO...
Example:
这不起作用,因为您使用分号。
分号表示语句结束。
如果你像这样删除分号,它会工作得很好:
或者只将其设置为 1 行:
This doesn't work because you use semicolon.
semicolon means end of statement.
It will work fine if you erase semicolon like this:
Or make it as 1 line only: