Pergunta

Quando eu faço algo como o seguinte:

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

O conteúdo de $ deletedusers está correto, mas os $ não-pessoas contêm todos os usuários não excluídos, não apenas os do site carregado $.

O que estou fazendo errado?

Foi útil?

Solução

É por causa de find_all() e find() Os métodos redefinirão seu estado modelo. Por exemplo, $user tem um where('site_id', '=', <site_id>) condição (foi aplicada na linha 1 do seu código). Quando Você ligar find_all(), Orm redefine todas as condições, então $nondeletedusers Funciona com modelo vazio.

Para evitar esse comportamento, você pode tentar clone $ usuários ou recuperar todos os IDs de usuários de $user e adicione AND WHERE id IN <id list> doença.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top