Kohana 3 orm find_all () Devuelve todas las filas independientemente de dónde la cláusula

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

  •  26-10-2019
  •  | 
  •  

Pregunta

Tengo uno simple users mesa, y quiero encontrar a todos los usuarios donde email_notifications = 1.

La lógica dicta que lo siguiente debería funcionar:

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;
        }
    }
}


Sin embargo, lo que está sucediendo es que estoy recuperando a todos mis usuarios del DB, no solo los que están activados por correo electrónico_notificaciones. Lo curioso es que el $total El valor devuelto es el resultado del número preciso de esta consulta.

Estoy tan perplejo, no tengo idea de cuál es el problema aquí. Si alguien pudiera arrojar algo de luz, realmente lo agradecería.

Gracias,
Brio

¿Fue útil?

Solución

Vocación count_all() restablecerá las condiciones de su modelo. Tratar de usar reset(FALSE) para evitar esto:

    $user = ORM::factory('user');
    $user = $user->where('email_notifications', '=', 1);
    $user->reset(FALSE); 
    $total = $user->count_all();
    $users = $user->find_all();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top