【问题标题】:Cakephp 3.x hasOne inserts default foreign keyCakephp 3.x hasOne 插入默认外键
【发布时间】:2017-07-19 09:42:33
【问题描述】:

我有一个表 X 通过包含连接到表 Y 当我想使用 hasOne 和函数将其与表 Z 进行内部连接(匹配)时。 CakePHP 通过 hasOne 自动连接到不存在的默认行

  public function initialize(array $config)
{  
    $this->belongsTo('Y', [
        'bindingKey' => 'initialen',
        'foreignKey' => 'initialen'
    ]);

    $this->hasOne('Z');
}

进一步

   public function search($c)
{

    $query = $this->find('all')->contain('Y')->matching('Z', function ($q) use ($c) {

        return $q->where(['Z.client_ID' => $c]);
    });


    return $query;


}

我遇到错误

错误:SQLSTATE[42S22]:找不到列:1054 未知列 'on 子句'中的'Z.search_id'

【问题讨论】:

    标签: php mysql cakephp cakephp-3.0


    【解决方案1】:

    如果 Z.search_id 不存在,则必须指定其他确实存在的外键:

    $this->hasOne('Z',[
        'foreignKey' => 'some_key'
    ]);
    

    更多信息:CakePHP hasOne association

    【讨论】:

    • 正确,但是这也会添加到查询中。我不想要什么。假设我将 foreignKey 指定为 'team_ID' FROM archief searches INNER JOIN archief_Z Z ON (Z.client_ID = 81 AND searches.ID = (@9876 team_ID) ) 左连接 archief_Y Y ON Y.initialen = (searches.initialen)
    【解决方案2】:

    好的,我自己找到了解决办法

    $this->hasOne('Z',[
    'foreignKey' => false
    ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多