Kohana 3 ORM find_all () restituisce tutte le righe indipendentemente da dove la clausola
-
26-10-2019 - |
Domanda
Ho una semplice tabella users
, e voglio trovare tutti gli utenti dove email_notifications
= 1.
La logica vuole che il seguente dovrebbe funzionare:
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;
}
}
}
Tuttavia, quello che sta succedendo è che sto ottenendo tutti i miei utenti indietro dal DB, non solo quelli con email_notifications accesi. La cosa divertente è, il valore $total
restituito è il preciso risultato numero di questa query.
Sono così perplesso, non ho idea di quale sia il problema è qui. Se qualcuno potesse fare una certa luce, sarei davvero grato.
Grazie,
Brian
Soluzione
Calling count_all()
azzera le vostre condizioni di modello. Prova ad utilizzare reset(FALSE)
per evitare questo:
$user = ORM::factory('user');
$user = $user->where('email_notifications', '=', 1);
$user->reset(FALSE);
$total = $user->count_all();
$users = $user->find_all();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow