CakePHP 3.x hasOne插入默认外键
问题描述:
我有一个表X连接到表Y通过包含 当我想内联接(匹配)这个表与Z使用hasOne和函数。 CakePHP的自动通过hasOneCakePHP 3.x 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;
}
我收到错误
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Z.search_id' in 'on clause'
答
好吧,我找到了解决自己
$this->hasOne('Z',[
'foreignKey' => false
]);
答
如果Z.search_id不存在,你必须指定存在的其他外键:
$this->hasOne('Z',[
'foreignKey' => 'some_key'
]);
正确的,但比这将增加也给查询。我不想要的。 比方说,我指定的外键为 'TEAM_ID' FROM ''archief' searches' INNER JOIN''archief_Z' ON Z'( 'Z'.'client_ID' = 81 和'searches'.'ID '=('Z'.team_ID') ) LEFT JOIN'archief_Y'' Y' ON'Y'.initialen' =('searching'.'initialen') – Joost