Pregunta

En CakePHP, tengo dos tablas, Países & amp; Redes. Tienen una relación HABTM y se unen países_redes.

Estoy tratando de obtener todos los países de la tabla de países donde el campo 'nombre' en Redes = 'o2'

Me di cuenta de que no puedo hacer esto usando un find () básico, por lo que he estado experimentando con el comportamiento contenible. He logrado restringir los datos devueltos, pero parece que 'contactable' no funciona exactamente como quiero. Aquí está mi código:

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

Sin embargo, esta consulta devuelve TODOS los países y Network.name si es 'o2'. Lo que realmente necesito hacer es devolver SOLO los países que tienen un Network.name de 'o2', y ningún otro.

¿Alguien puede ayudar? Gracias.

¿Fue útil?

Solución

Su consulta le devuelve exactamente lo que pide. Intenta seleccionar de la red.

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

$countries = $countries['Country'];

Otros consejos

" = '= > " ¿Qué es? no es necesario usar " = " símbolo después de " Network.name "

Deberías poder hacer algo como esto:

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

No he probado esto, pero debería acercarte bastante a donde necesitas estar.

Además, tenga en cuenta que cambiar la matriz hasAndBelongsToMany como esta afectará todas las consultas posteriores contra ese modelo durante la carga de la página actual (pero se restablecerá la próxima vez que se instancia el modelo).

Estoy saliendo por la puerta, lamento la breve explicación.

Creo que lo que quieres es una relación HABTM, pero poder filtrar según los datos del modelo asociado. Para hacer esto, echa un vistazo a " Containable " comportamiento en el manual de Cake. Estoy bastante seguro de que eso es lo que buscas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top