如何在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'
]);