Kohana 3 ORM find_all () restituisce tutte le righe indipendentemente da dove la clausola

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

  •  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

È stato utile?

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
scroll top