cakephp3.xhasone插入默认外键

cakephp3.xhasone插入默认外键,php,mysql,cakephp,cakephp-3.0,Php,Mysql,Cakephp,Cakephp 3.0,我有一个表X通过包含连接到表Y 当我想使用hasOne和一个函数将其与表Z进行内部连接(匹配)时。 CakePHP通过hasOne自动连接到不存在的默认行 public function initialize(array $config) { $this->belongsTo('Y', [ 'bindingKey' => 'initialen', 'foreignKey' => 'initialen' ]); $

我有一个表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”


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

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

更多信息:

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

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

更多信息:

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

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

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

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

正确,但这也将添加到查询中。我不想要的。假设我在(
Z
client\u ID
=81和
searches
ID
团队ID
)上指定foreignKey作为
archief
搜索
ID
=(
Z
团队ID
)在
Y
initialen
=(
搜索
initialen
)上的左连接
存档Y
Y
)正确,但这也将添加到查询中。我不想要的。假设我在(
Z
client\u ID
=81和
searches
ID
团队ID
)上指定foreignKey作为
archief
搜索
ID
=(
Z
团队ID
)左连接
archief\u Y
Y
Y
initialen
=(
搜索
initialen