Kohana 3 orm find_all () возвращает все ряды независимо от того, где пункт

StackOverflow https://stackoverflow.com/questions/5338758

  •  26-10-2019
  •  | 
  •  

Вопрос

У меня есть один простой 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 Возвращение значения является точным численным результатом этого запроса.

Я так озадачен, я понятия не имею, в чем проблема. Если бы кто -то мог пролить свет, я бы очень признателен.

Спасибо,
Брайан

Это было полезно?

Решение

Вызов 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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top