Kohana 3.1 ORM - 条件参数

时间:2012-03-20 03:16:12

标签: kohana kohana-3 kohana-orm

我正在努力实现一个非常简单的目标,但它似乎并没有起作用。我希望使用Kohana的ORM并有条件地添加某些参数。

例如:

$query = ORM::factory('user')
  ->where('foo', '=', 'bar');

if (isset($some_var))
  $query->where('field', '=', $some_var);

$query->find_all();


人们会认为这应该有用,但我从$query获得的所有东西都是无足轻重的。任何建议,我将不胜感激!感谢。


修改

这个Kohana页面上的简单示例甚至显示了类似的查询: http://kohanaframework.org/3.1/guide/orm/examples/simple

...但即使我创建了一个'用户'模型实例,然后在单独的语句中尝试find_all(),我也什么也得不到。

这有效:

$query = ORM::factory('user')->find_all();

这不起作用:

$query = ORM::factory('user');
$query->find_all();

可能的错误??

2 个答案:

答案 0 :(得分:4)

在您的示例中,您将find_all()返回的值赋给$ query。虽然在不起作用的示例中,您根本没有分配find_all()返回的值。

kohana framework

$query = ORM::factory('user');
$result = $query->find_all(); 
// you may now loop over $result

当你查看api时,你会发现find()和find_all()的工作方式不同。

答案 1 :(得分:0)

您的代码完全正常,因为ORM::where方法返回ORM对象,因此方法链接没有问题。您应该在其他地方查找错误(可能您的$some_var已设置但可能为空,因此您的情况可能与预期的不同)。我会尝试这个小改动:

if (!empty($some_var))
  $query->where('field', '=', $some_var);