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?

È stato utile?

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