2017-02-17 84 views
1

大家好我正面临问题分配数组(从数据库中提取)到下拉列表。这里是代码如何将从数据库获取的数据的数组显示到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 

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

回答

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' 
]); 
相关问题