Kohana 3 ORM find_all () возвращает все строки независимо от того, где предложение - PullRequest
4 голосов
/ 17 марта 2011

У меня есть одна простая таблица 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 Ответ

9 голосов
/ 17 марта 2011

Вызов 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();
...