2017-02-17 85 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' 
]); 
相關問題