如何在CakePHP中将从数据库获取的数据数组显示到下拉列表中?

如何在CakePHP中将从数据库获取的数据数组显示到下拉列表中?,php,cakephp,Php,Cakephp,大家好,我在将数组(从数据库获取)分配到下拉列表时遇到问题。这是密码 控制器代码 $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_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(“列表”)
返回可在下拉列表中使用的主键显示字段值数组。您可能需要将
skill
指定为
displayField
,才能正常工作

CakePHP 2

在CakePHP 2中,
displayField
是模型的一个属性:-

class Skill extends AppModel {

    public $displayField = 'skill';

}
class SkillsTable extends Table
{

    public function initialize(array $config)
    {
        $this->displayField('skill');
    }
}
或者,您可以在执行
find()
时定义要在列表中返回的列:-

CakePHP 3

在CakePHP 3中,您可以在模型中定义
显示字段
:-

class Skill extends AppModel {

    public $displayField = 'skill';

}
class SkillsTable extends Table
{

    public function initialize(array $config)
    {
        $this->displayField('skill');
    }
}
如果要在CakePHP 3中的
find()
查询中执行此操作,则需要定义
keyField
valueField
:-

$this->Skill->find('all', [
    'fields' => [
        'Skill.id',
        'Skill.skill'
    ]
]);
$this->Skill->find('list', [
    'keyField' => 'id',
    'valueField' => 'skill'
]);