Условия в CakePHP

#php #mysql #forms #cakephp

#php #mysql #формы #cakephp

Вопрос:

Я пытаюсь найти страны с 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:

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

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

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

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

 'conditions' => array(
    'Country.zone_id' => array(1, 2, 3),
)