我有两张桌子:用户和公司:
class Firm extends AppModel {
var $name = 'Firm';
var $hasAndBelongsToMany = 'User';
}
和
class User extends AppModel {
var $name = 'User';
var $hasMany ='Post';
var $hasAndBelongsToMany = 'Firm';
}
我使用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);
}
一切都很好,但是当我使用用户/添加时,我得到了ID为“1”,“2”等的下拉列表。 我想显示公司名称,而不是ID。怎么做?
答案 0 :(得分:6)
你需要在模型中设置'displayField'属性,这就是Cake在各种内置函数中使用的属性,包括find('list');`这默认为'name'或'title'数据库中的字段,但我猜你在公司数据库中没有这些字段。
在您的Firms模型中更改它:
var $displayField = 'firm_name';