基本 Kohana ORM 查找记录

发布于 2025-01-06 21:36:11 字数 1729 浏览 0 评论 0原文

我想使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

腹黑女流氓 2025-01-13 21:36:11

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

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

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

编辑:

要使用 where 语句获取行,您可以编写:

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

The correct syntax to get all the rows would be:

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

Then to check if something has been loaded use $comptes->loaded() (not count($comptes)).

Edit:

To get rows using a where statement, you would write:

$rows = ORM::factory('compte')->where('empresa_id', '=', 2)->find_all();
所谓喜欢 2025-01-13 21:36:11
$comptes = ORM::factory('compte');
$comptes->find_all();

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

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

This doesnt work because you didn't assign find_all() result in a variables.
You should write :

$comptes = ORM::factory('compte');
$rows = $comptes->find_all();
李不 2025-01-13 21:36:11

如果您只是为了可读性而想将其分成多行,那么这是最简单的方法……

示例:

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

If you just want to break it down into multiple lines for readability's sake, this is the simplest method IMO...

Example:

$comptes = ORM::factory('compte')
    ->where('empresa_id', '=', 2)
    ->find_all();
千紇 2025-01-13 21:36:11
$comptes = ORM::factory('compte');
$comptes->find_all();

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

如果你像这样删除分号,它会工作得很好:

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

或者只将其设置为 1 行:

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

This doesn't work because you use semicolon.
semicolon means end of statement.

It will work fine if you erase semicolon like this:

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

Or make it as 1 line only:

$comptes = ORM::factory('compte')->find_all();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文