我正在尝试从另一个表(Ports)连接两次表(Connections)。
条件是:
结构是:
表端口:
表连接:
所以现在我想从Ports加入到Connections。
Cake总是给我这个:
LEFT JOIN connections Connections ON Ports.id = (Connections.port_from_id)
但必须是:
LEFT JOIN connections Connections ON Ports.id = (Connections.port_from_id) OR Ports.id = (Connections.port_to_id)
或类似的东西。
My Ports-Model实际上是这样的:
$this->hasOne('Connections', [
'foreignKey' => 'port_from_id',
'joinType' => 'LEFT'
]);
如何在我的加入中获得OR条件?
谢谢!
答案 0 :(得分:0)
您必须禁用关键外键处理(IIRC这仅适用于使用hasOne
策略的JOIN
关联,可能适用于{{1}因为不支持多个外键(与复合外键不同),所以自己提供条件,并自行提供条件。
有些事情:
belongsTo
那应该创建类似于:
的SQLuse Cake\Database\Expression\IdentifierExpression;
// ...
$this->hasOne('Connections', [
'foreignKey' => false,
'conditions' => [
'OR' => [
'Connections.port_from_id' => new IdentifierExpression($this->aliasField('id')),
'Connections.port_to_id' => new IdentifierExpression($this->aliasField('id')),
]
]
]);
另见