【问题标题】:display data from two tables using inner join in cakephp在 cakephp 中使用内部联接显示两个表中的数据
【发布时间】:2023-04-03 14:44:01
【问题描述】:

我正在使用 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 其余未选择的情况。请指导。

【问题讨论】:

    标签: php mysql cakephp


    【解决方案1】:

    我假设您使用的是非常旧的 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 或更早版本,因此请参阅旧书。

    【讨论】:

      【解决方案2】:

      我认为你可以不用 bindModel,比如

      $this->names->find('all', 
          array(
              'limit' => 10,
              'joins' =>
                  array(
                      array(
                          'table'         => 'genders',
                          'type'          => 'INNER',
                          'conditions'    => array('genders.id = names.genders_id')
                      ),
                  ),
          )
      );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-17
        • 1970-01-01
        • 2015-07-29
        • 1970-01-01
        • 2017-01-06
        • 2017-01-15
        • 2012-11-15
        • 2014-07-23
        相关资源
        最近更新 更多