我有一个简单的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
值是此查询的准确数字结果。
我很难过,我不知道这里的问题是什么。如果有人能说清楚,我真的很感激。
谢谢,
布赖恩
答案 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();