我有两个客户数据表。我需要在两列(primaryKey和customer_id)上进行连接。这里描述的问题和解决方案如下: How can I join two tables on multiple columns in CakePHP 3?CakePHP 3 belongsTo通过多列使用默认值
也有一些包含customer和“global”数据的表。全球数据适用于所有客户,并可通过customer_id“0”识别。
结果应该是这样的:
SELECT * FROM
table1
INNER JOIN
table2
ON (table1.table2_id = table2.id AND
(table1.customer_id=table2.customer_id OR table2.customer_id=0))
WHERE 1;
是否有可能(如果有的话,如何)与CakePHP的关系,做到这一点?
更新:它似乎并没有在
... INNER JOIN calibrations Calibrations ON ( Foods.calibration_id = Calibrations.id AND ( Foods.tenant_id = 'Calibrations.tenant_id' OR Calibrations.tenant_id = 0 ) AND Calibrations.id = (Foods.calibration_id) ) ...
月2日更新工作尚未
$this->belongsTo('Calibrations', [ 'foreignKey' => 'calibration_id', 'joinType' => 'INNER', 'conditions' => [ 'Foods.calibration_id = Calibrations.id', 'OR' => [ 'Foods.tenant_id' => 'Calibrations.tenant_id', 'Calibrations.tenant_id' => '0' ] ] ]);
结果:
对不起我的草率调查,我已经找到了解决办法:
$this->belongsTo('Calibrations', [
'foreignKey' => 'calibration_id',
'joinType' => 'INNER',
'conditions' => [
'OR' => [
'Foods.tenant_id = Calibrations.tenant_id',
'Calibrations.tenant_id' => '0'
]
]
]);
结果
INNER JOIN calibrations Calibrations ON (
(
Foods.tenant_id = Calibrations.tenant_id
OR Calibrations.tenant_id = 0
)
AND Calibrations.id = (Foods.calibration_id)
)
那解...
请用英文。 – aynber
感谢翻译很好 – chriss