Выберите из таблицы, где связанная таблица fieldname = 'x' в Cake PHP - PullRequest
0 голосов
/ 18 июня 2009

В CakePHP у меня есть две таблицы: страны и сети. У них есть отношения HABTM, и к ним присоединились country_networks.

Я пытаюсь получить все страны из таблицы стран, где поле 'name' в Networks = 'o2'

Я понял, что не могу сделать это с помощью простого find (), поэтому я экспериментировал с сдерживаемым поведением. Мне удалось ограничить возвращаемые данные, но выглядит так, как будто «встраиваемые» работают не совсем так, как я хочу. Вот мой код:

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

Однако этот запрос возвращает ВСЕ страны и имя Network.name, если оно равно 'o2'. Что мне действительно нужно сделать, это вернуть ТОЛЬКО страны, которые имеют Network.name «o2», и никаких других.

Кто-нибудь может помочь? Благодаря.

Ответы [ 4 ]

2 голосов
/ 18 июня 2009

"= '=>" Что это? нет необходимости использовать символ "=" после "Network.name"

1 голос
/ 19 июня 2009

Ваш запрос возвращает вам именно то, что вы спрашиваете. Попробуйте выбрать из сети.

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

$countries = $countries['Country'];
1 голос
/ 18 июня 2009

Я ухожу за дверь, извините за краткое объяснение.

Я думаю, что вам нужны отношения HABTM, но для возможности фильтрации на основе данных связанной модели. Для этого ознакомьтесь с поведением «Containable» в руководстве Cake. Уверен, это то, что вы ищете.

1 голос
/ 18 июня 2009

Вы должны быть в состоянии сделать что-то вроде этого:

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

Я не проверял это, но оно должно приблизить вас к тому месту, где вы должны быть.

Также имейте в виду, что подобное изменение массива hasAndBelongsToMany повлияет на все последующие запросы к этой модели во время текущей загрузки страницы (но будет сброшено при следующем создании экземпляра модели).

...