каква е грешката в списъка за намиране

Свързах get с метода $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
защо find(list) не работи за вас?   -  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
Ако сте затрупани от find(list), просто използвайте find(all) и ръчно интерсирайте вашия резултат.   -  person mark    schedule 25.01.2013
comment
да, @mark, но се предполага, че функцията трябва да върне всички идентификатори поотделно, или не?   -  person Martin    schedule 25.01.2013
comment
не, намиране на списък винаги връща списък (ред ключ + стойност). след това използвайте find(all).   -  person mark    schedule 25.01.2013


Отговори (1)


Бих използвал

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

ако наистина се нуждаете от целочислени ключове, базирани на 0, все още можете да направите:

$ids = array_values($ids);

но това не е необходимо IMO.

Актуализация:

След актуализирането на въпроса ви цялото значение на самия ви въпрос се промени:

Ако посочите само id, ключовете и стойностите ще бъдат запълнени с него. Използвайки 'fields' => array('round_id', 'type_id'), имате round_id, който попълва ключовете, и type_id, който попълва стойностите за find(list).

find(list) винаги връща списък (ред ключ + стойност). Ако не искате това, тогава използвайте find(all).

person mark    schedule 25.01.2013
comment
Редактирах въпроса, защото и аз мислех за това, но не работи, благодаря все пак :) - person Martin; 25.01.2013
comment
Благодаря за обяснението, сбърках със списъка с методите, благодаря! - person Martin; 25.01.2013