Kohanav3 orm: chamando onde-> find_all duas vezes
-
26-09-2019 - |
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?
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