Kohana 3.1 ORM-条件参数

Kohana 3.1 ORM-条件参数,kohana,kohana-3,kohana-orm,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的ORM并有条件地添加某些参数

例如:

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

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

$query->find_all();

有人会认为这应该行得通,但我从
$query
得到的只是一个大而肥的零。如有任何建议,我将不胜感激!谢谢


编辑:

$query = ORM::factory('user')->find_all();
$query = ORM::factory('user');
$query->find_all();
Kohana页面上的简单示例甚至显示了一个类似的查询:

…但即使我创建了一个“用户”模型实例,然后尝试在一个单独的语句中
find_all()
,我还是一无所获

这是有效的:

$query = ORM::factory('user')->find_all();
$query = ORM::factory('user');
$query->find_all();
这不起作用:

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

可能的错误???

您的代码非常好,因为
ORM::where
方法返回ORM对象,所以方法链接没有问题。您应该在其他地方查找错误(可能您的
$some\u var
已设置,但可能为空,因此您的条件可能与预期的不同)。我想试试这个小零钱:

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

您的代码非常好,因为
ORM::where
方法返回ORM对象,所以方法链接没有问题。您应该在其他地方查找错误(可能您的
$some\u var
已设置,但可能为空,因此您的条件可能与预期的不同)。我想试试这个小零钱:

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

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


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

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


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

我希望这就是问题所在。但是当我消除“如果”行时,我得到了相同的结果。就像当查询被拆分时,它就不再工作了。当我使用
DB::select
时,我也得到了同样的结果。好吧,我能说的就是它总是对我有效,所以问题一定在代码中的其他地方。如果我的问题不在这段代码中,可能是我试图访问数据的方式有问题?在我的视图文件中,我有一个
foreach($query as$user)
循环,在那里我试图通过
$user->first\u name
访问数据。我是否需要先做些别的事情才能让它起作用?我不知道为什么会有不同,但在这一点上,我不知道它还能是什么。谢谢你的帮助。你所能做的就是发布整个控制器/视图/模型文件,我希望这就是问题所在。但是当我消除“如果”行时,我得到了相同的结果。就像当查询被拆分时,它就不再工作了。当我使用
DB::select
时,我也得到了同样的结果。好吧,我能说的就是它总是对我有效,所以问题一定在代码中的其他地方。如果我的问题不在这段代码中,可能是我试图访问数据的方式有问题?在我的视图文件中,我有一个
foreach($query as$user)
循环,在那里我试图通过
$user->first\u name
访问数据。我是否需要先做些别的事情才能让它起作用?我不知道为什么会有不同,但在这一点上,我不知道它还能是什么。谢谢你们的帮助。你们最好把整个控制器/视图/模型文件都贴出来。天哪,我真不敢相信我居然漏掉了。啊。谢谢你指出这一点!天哪,我真不敢相信我错过了。啊。谢谢你指出这一点!