Условия в тортPHP - PullRequest
       2

Условия в тортPHP

1 голос
/ 08 октября 2011

Я пытаюсь найти страны с conditions в качестве переменной, это выглядит так:

$conditions = '1,2,3';
$this->set('options',
    $this->Agency->Country->find('list',
        array(
            'conditions' => array(
                'Country.zone_id' => array($conditions)
             ) 
        )
    )
);

Это должно привести к нахождению всех стран с zone_id = 1 или 2 или 3.

Но в этом случае только первое значение в $conditions учитывается, поэтому в этом случае оно работает как Country.zone_id' => array(1). Возвращает только страны с zone_id = 1. Почему пропускаются все остальные?

1 Ответ

1 голос
/ 08 октября 2011

Я думаю, что значение преобразуется в int, что означает, что остаток после "1" игнорируется. Если указан массив, то он ведет себя как предложение IN в SQL, где каждая запись массива является значением, которое необходимо проверить.

Так что, если вам нужно использовать строку с каждым идентификатором, разделенным запятой, попробуйте следующее:

'conditions' => array(
    'Country.zone_id' => explode(",", $conditions)
)

В противном случае, если у вас уже есть массив числовых идентификаторов, вы можете назначить его напрямую:

'conditions' => array(
    'Country.zone_id' => array(1, 2, 3),
)     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...