CakePHP在下拉列表中显示除id之外的其他字段

zax*_*zax 3 cakephp view

我有两张桌子:用户和公司:

class Firm extends AppModel {
    var $name = 'Firm';
    var $hasAndBelongsToMany = 'User';
}
Run Code Online (Sandbox Code Playgroud)

和:

class User extends  AppModel {
    var $name = 'User';
    var $hasMany ='Post';
    var $hasAndBelongsToMany = 'Firm';
}
Run Code Online (Sandbox Code Playgroud)

我使用scaffold var来显示所有保存/查看/编辑等方法.我重写了这样的add方法:

function add(){
    if (!empty($this->data)) {
        $this->User->create();
        $this->User->save($this->data);
        $this->redirect(array('action'=>'index'), null, true);
    }
    $firms = $this->User->Firm->find('list');
    $this->set('firms', $firms);
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,但当我使用用户/添加时,我得到了ID为"1","2"等的下拉列表.
我想显示公司名称,而不是ID.怎么做?

Dun*_*zzz 6

你需要在模型中设置' displayField '属性,这是Cake在各种内置函数中使用的属性,包括find('list');`这默认为数据库中的'name'或'title'字段,但是我我猜你在公司数据库中没有这些字段.

在您的Firms模型中更改它:

var $displayField = 'firm_name';
Run Code Online (Sandbox Code Playgroud)