Question

Dans CakePHP, j'ai deux tables, Countries & amp; Réseaux. Ils ont une relation HABTM et sont rejoints par countries_networks.

J'essaie d'obtenir tous les pays de la table des pays où le champ "nom" de Networks = "o2"

J'ai compris que je ne pouvais pas utiliser une méthode find () basique. J'ai donc expérimenté le comportement confinable. J'ai réussi à restreindre les données renvoyées, mais il semble que «confinable» ne fonctionne pas exactement comme je le souhaite. Voici mon code:

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

Cependant, cette requête renvoie TOUS les pays et le nom de réseau.nom si «o2». Ce que j'ai vraiment besoin de faire, c'est de retourner UNIQUEMENT les pays qui ont un nom de réseau «o2» et aucun autre.

Quelqu'un peut-il aider? Merci.

Était-ce utile?

La solution

Votre requête vous renvoie exactement ce que vous demandez. Essayez de sélectionner Réseau.

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

$countries = $countries['Country'];

Autres conseils

" = '= > " Qu'Est-ce que c'est? il n’est pas nécessaire d’utiliser " = " symbole après "nom de réseau"

Vous devriez pouvoir faire quelque chose comme ceci:

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

Je n'ai pas testé cela, mais cela devrait vous rapprocher de l'endroit où vous devez être.

N'oubliez pas non plus que modifier le tableau hasAndBelongsToMany de la sorte affectera toutes les requêtes ultérieures relatives à ce modèle pendant le chargement de la page en cours (mais il sera réinitialisé à la prochaine instanciation du modèle).

Je suis sur le point de sortir, excusez-moi pour cette brève explication.

Je pense que vous voulez une relation HABTM, mais que vous puissiez filtrer en fonction des données du modèle associé. Pour ce faire, consultez la rubrique " Containable " comportement dans le manuel de Cake. Je suis sûr que c'est ce que vous recherchez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top