Kohana 3 ORM find_all()返回所有行,而不管where子句

时间:2011-03-17 12:05:31

标签: kohana-3 kohana-orm

我有一个简单的users表,我想查找email_notifications = 1的所有用户。

逻辑规定以下内容应该有效:

class Controller_Test extends Controller {

    public function action_index()
    {
        $user = ORM::factory('user');
        $user = $user->where('email_notifications', '=', 1);
        $total = $user->count_all();
        $users = $user->find_all();

        echo $total." records found.<br/>";

        foreach ($users as $v)
        {
            echo $v->id;
            echo $v->first_name;
            echo $v->last_name;
            echo $v->email;
        }
    }
}


然而,正在发生的事情是我从数据库中恢复了所有用户,而不仅仅是打开了email_notifications的用户。有趣的是,返回的$total值是此查询的准确数字结果。

我很难过,我不知道这里的问题是什么。如果有人能说清楚,我真的很感激。

谢谢,
布赖恩

1 个答案:

答案 0 :(得分:9)

调用count_all()将重置您的模型条件。尝试使用reset(FALSE)来避免这种情况:

    $user = ORM::factory('user');
    $user = $user->where('email_notifications', '=', 1);
    $user->reset(FALSE); 
    $total = $user->count_all();
    $users = $user->find_all();