Pergunta

Em CakePHP, tenho duas tabelas, Países & Redes. Eles têm uma relação HABTM e são unidos por countries_networks.

Eu estou tentando obter todos os países da tabela de países onde o campo 'nome' no Networks = 'o2'

Eu percebi que não pode fazer isso usando um achado básico (), então eu tenho experimentado com o comportamento containable. Eu consegui para restringir os dados retornados, mas parece que 'containable' não é exatamente trabalhar como eu quero. Heres meu código:

$countries = $this->Country->find('all', array('contain' => array(
                                'Network' => array(
                                'conditions' => array('Network.name =' => "o2"),
    )
    )));

Esta consulta no entanto retorna todos os países, eo Network.name se o seu 'O2'. O que eu realmente precisa fazer é retornar apenas os países que têm um Network.name de 'o2', e não outros.

alguém pode ajudar? Obrigado.

Foi útil?

Solução

A sua consulta retorna exatamente o que o seu perguntar. Tente selecionar a partir da rede.

$countries = $this->Country->Network->find('first', array(
    'conditions' => array('Network.name' => "o2"),
    'contain' => array('Country')
));

$countries = $countries['Country'];

Outras dicas

"='=>" O que é isso? não há é necessário para uso símbolo "=" depois de "Network.name"

Você deve ser capaz de fazer algo parecido com isto:

$this->Country->hasAndBelongsToMany['Network']['conditions'] = array('Network.name'=>'o2');
$myCountries = $this->Country->find('all');

Eu não testei isso, mas deverá fazê-lo muito perto de onde você precisa ser.

Além disso, tenha em mente que a mudança da matriz hasAndBelongsToMany como isso vai afetar todas as consultas subsequentes contra esse modelo durante o carregamento da página atual (mas será redefinida na próxima vez que o modelo é instanciado).

Eu estou no meu caminho para fora da porta, tão triste para o breve explicação.

Eu acho que o que você quer é uma relação HABTM, mas para ser capaz de filtro com base em dados do modelo associado. Para fazer isso, veja o comportamento "Containable" no bolo do manual. Certeza que é o que você está depois.

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