我有两张桌子:用户和公司:
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.怎么做?
你需要在模型中设置' displayField '属性,这是Cake在各种内置函数中使用的属性,包括find('list');`这默认为数据库中的'name'或'title'字段,但是我我猜你在公司数据库中没有这些字段.
在您的Firms模型中更改它:
var $displayField = 'firm_name';
Run Code Online (Sandbox Code Playgroud)