Pregunta

Cuando hago algo parecido a lo siguiente:

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

El contenido de $ deletedusers es correcta, pero los $ nondeletedusers contiene cada usuario que no sea eliminado, no sólo los que están en el sitio $ cargado.

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

Su debido a los métodos find_all() y find() se restablecerá su estado modelo. Por ejemplo, $user tiene una condición where('site_id', '=', <site_id>) (se aplicó en la línea # 1 de su código). Cuando se llama a find_all(), ORM restablece todas las condiciones, por lo que trabaja con $nondeletedusers modelo vacío.

Para evitar este comportamiento, se puede tratar de clone $ usuarios, o recuperar los identificadores de todos los usuarios de $user y añadir condición AND WHERE id IN <id list>.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top