Como corresponder registros associados a um conjunto específico de outros registros?

Estou tentando adicionar duas variações de pesquisa diferentes ao meu projeto. Existe um modelo "Usuário" e um modelo "Tag". Um usuário tem muitas tags. Agora eu quero poder pesquisar os usuários com tags específicas. Desejo mostrar a todos os usuários que possuem alguma das tags especificadas. Eu consegui trabalhar desta maneira:

$query = $this->Users->find();
$query->matching('Tags', function ($q) {
    return $q->where(['Tags.name' => 'Tag1'])
             ->orWhere(['Tags.name' => 'Tag2']);
});

Mas agora eu quero encontrar todos os usuários que possuem as duas tags ao mesmo tempo. eu tentei->andWhere ao invés de->orWhere, mas o resultado está sempre vazio.

Como posso encontrar usuários que contêm várias tags?

obrigado

questionAnswers(1)

yourAnswerToTheQuestion