我正在使用cakephp。我有两个表名和性别。我想要显示性别的显示名称。但名字只显示男性。女性也有性别,但未被选中。我的代码如下。
$this->loadModel("names");
$modelmerge = $this->names->bindModel(array
(
'belongsTo' => array
(
'genders' => array
(
'foreignKey' => false,
'conditions' => array
(
'genders.id = names.genders_id'
)
)
)
));
$this->set("names", $this->names->find('all', array('limit' => 10)));
这只选择names.genders_id = 1其余未选中的地方。请指导。
答案 0 :(得分:0)
我假设您使用的是非常旧版本的CakePHP,或者您使用的是非常糟糕的命名约定。
$modelmerge = $this->names->bindModel(
array(
'belongsTo' => array(
'genders' => array(
'classname' => 'Genders',
'foreignKey' => genders_id
)
)
)
);
$names = $this->names->find('all', array(
'limit' => 10,
'recursive' => 0
));
$this->set("names", $names);
以下可能会奏效。不过,我建议您阅读naming Models/DB columns,Model Associations和Containable Behavior。链接适用于版本2.x但我认为您可能在1.3或更早版本,所以请参阅旧书。
答案 1 :(得分:0)
我认为你可以不用bindModel,比如
$this->names->find('all',
array(
'limit' => 10,
'joins' =>
array(
array(
'table' => 'genders',
'type' => 'INNER',
'conditions' => array('genders.id = names.genders_id')
),
),
)
);