Cakephp 3.x hasOne插入默认外键

时间:2017-07-19 09:42:34

标签: php mysql cakephp cakephp-3.0

我有一个表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未知列   ' Z.search_id'在' on条款'

2 个答案:

答案 0 :(得分:0)

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

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

更多信息:CakePHP hasOne association

答案 1 :(得分:0)

好的,我自己找到了解决方案

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