Привет всем Я столкнулся с проблемой присвоения массива (извлеченного из базы данных) в раскрывающемся списке. Вот код
Код контроллера
$skill_rows = $this->Skill->find("all"); $this->set(compact("skill_rows"));
Код CTP
$skills = $skill_rows; echo $this->Form->select("Seeker.skills",$skills,array("empty"=>"Select"));
База данных
id skill 1 PHP 2 CakePHP
Я хочу отобразить только столбец навыков в выпадающем списке, но он отображает полную таблицу.
Используйте $this->Skill->find("list");
для возврата массива значений поля первичного ключа, которые можно использовать в раскрывающемся списке. Возможно, вам потребуется указать skill
как displayField
будет работать правильно.
CakePHP 2
В CakePHP 2 displayField
является атрибутом модели: –
class Skill extends AppModel { public $displayField = 'skill'; }
В качестве альтернативы вы можете определить столбцы, которые хотите вернуть в списке, когда вы выполняете find()
: –
$this->Skill->find('all', [ 'fields' => [ 'Skill.id', 'Skill.skill' ] ]);
CakePHP 3
В CakePHP 3 вы можете определить displayField
в модели: –
class SkillsTable extends Table { public function initialize(array $config) { $this->displayField('skill'); } }
Если вы хотите сделать это в запросе find()
в CakePHP 3, вам нужно определить keyField
и valueField
: –
$this->Skill->find('list', [ 'keyField' => 'id', 'valueField' => 'skill' ]);