Kohana 3 orm find_all () Devuelve todas las filas independientemente de dónde la cláusula
-
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
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