使用cakephp中的内部联接显示来自两个表的数据

时间:2014-03-10 17:06:44

标签: php mysql cakephp

我正在使用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其余未选中的地方。请指导。

2 个答案:

答案 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 columnsModel AssociationsContainable 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')
                ),
            ),
    )
);