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

时间:2017-02-17 07:29:50

标签: 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
1    PHP
2    CakePHP

我希望在下拉列表中仅显示技能列,但它显示完整的表格。

1 个答案:

答案 0 :(得分:2)

使用$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');
    }
}

如果您想在CakePHP 3中的find()查询中执行此操作,则需要定义keyFieldvalueField: -

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