我有一个表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条款'
答案 0 :(得分:0)
如果Z.search_id不存在,则必须指定其他存在的外键:
$this->hasOne('Z',[
'foreignKey' => 'some_key'
]);
答案 1 :(得分:0)
好的,我自己找到了解决方案
$this->hasOne('Z',[
'foreignKey' => false
]);