Question

Quand je fais quelque chose comme ce qui suit:

$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();

Le contenu de $ deletedusers est correct, mais les nondeletedusers de $ contient tous les utilisateurs de non supprimés, pas seulement ceux du site chargé $.

Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Son à cause des méthodes de find_all() et find() réinitialisera votre état modèle. Par exemple, $user a une condition de where('site_id', '=', <site_id>) (il a été appliqué dans la ligne n ° 1 de votre code). Lorsque vous appelez find_all(), ORM remet à zéro toutes les conditions, donc $nondeletedusers fonctionne avec le modèle vide.

Pour éviter ce problème, vous pouvez essayer de clone $ utilisateurs, ou récupérer tous les utilisateurs ids de $user et ajouter la condition de AND WHERE id IN <id list>.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top