Kohanav3 ORM: chiamando dove-> find_all due volte
-
26-09-2019 - |
Domanda
Quando faccio qualcosa di simile al seguente:
$site = ORM::factory('site')->where('name', '=', 'Test Site')->find();
$users = $site->users;
$deletedusers = $users->where('deleted', '=', '1')->find_all();
$nondeletedusers = $users->where('deleted', '=', '0')->find_all();
Il contenuto di $ deletedusers è corretto, ma i $ nondeletedusers contiene ogni utente non cancellato, non solo quelli del $ sito caricato.
Che cosa sto facendo di sbagliato?
Soluzione
La sua causa dei metodi find_all()
e find()
ripristinerà il vostro stato modello. Ad esempio, $user
ha una condizione where('site_id', '=', <site_id>)
(è stato applicato nella linea # 1 del codice). Quando si chiama find_all()
, ORM azzera tutte le condizioni, in modo da $nondeletedusers
lavora con il modello vuoto.
Per evitare questo comportamento, si può provare a clone
$ gli utenti, o recuperare tutti gli utenti gli ID da $user
e aggiungere condizioni AND WHERE id IN <id list>
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow