что это за ошибка списка поиска

Я связал методом $this>model->find() получение массива с идентификаторами моей модели, которые имеют такую ​​форму:

Array ( [0] => 2,  [1] => 3)  (value are the IDs)

и я пытаюсь $this->model->find('list') Я думал, что это тоже сработает, но по какой-то странной причине я сделал:

$this->model->find('list',array('recursive' => -1  ,'fields' => array('model.type_id'),'conditions'=>$cond));

и результат запроса:

SELECT `model`.`round_id`, `model`.`type_id` FROM `database`.`model` AS `X` WHERE `X`.`Round_id` = '1'

Если я сделаю этот запрос к базе данных, он вернет два значения, но cakephp вернет только одно:

Array ( [1] => 2 )

я не знаю, что может быть


person Martin    schedule 25.01.2013    source источник
comment
почему поиск (список) не работает для вас?   -  person mark    schedule 25.01.2013
comment
Теперь вы просто полностью изменили свой вопрос. Как видите, ключ равен 1 (round_id), а значение равно 2 (type_id). Таким образом, он возвращает ДВА значения, а не одно.   -  person mark    schedule 25.01.2013
comment
@mark у меня не работает, и я не знаю причину   -  person Martin    schedule 25.01.2013
comment
Если вы перегружены поиском (списком), просто используйте поиск (все) и вручную взаимодействуйте с вашим результатом.   -  person mark    schedule 25.01.2013
comment
да @mark, но предполагается, что функция должна возвращать все идентификаторы отдельно, или нет?   -  person Martin    schedule 25.01.2013
comment
нет, список поиска всегда возвращает список (строка ключ + значение). используйте найти (все) тогда.   -  person mark    schedule 25.01.2013


Ответы (1)


я хотел бы использовать

$ids = $this->Model->find('list', array('fields' => array('id')));

если вам действительно нужны целые ключи на основе 0, вы все равно можете сделать:

$ids = array_values($ids);

но это не обязательно имхо.

Обновление:

После обновления вашего вопроса весь смысл вашего вопроса изменился:

Если вы укажете только id, то и ключи, и значения будут заполнены им. Используя 'fields' => array('round_id', 'type_id'), у вас есть round_id, заполняющий ключи, и type_id, заполняющий значения для поиска (списка).

find(list) всегда возвращает список (ключ + строка значения). Если вы не хотите этого, используйте find(all).

person mark    schedule 25.01.2013
comment
Я отредактировал вопрос, потому что тоже думал об этом, но это не работает, все равно спасибо :) - person Martin; 25.01.2013
comment
Спасибо за объяснение, я ошибся со списком методов, спасибо! - person Martin; 25.01.2013