#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),
)