cakephp-3.0 - 加入没有 id 作为列名的表 - Cakephp 3
问题描述
我有一个大问题,我不知道如何加入一个表而不传递 '_id' 作为引用的列名,并且还包括多个没有此约束的表。比如我想加入 A.code = B.code_defaut
我尝试了两种方法:
$cycle = $this->Cycles->find('all')
->where(['Cycles.id'=>$id])
->contain(['Quais',
'Defauts',
'Traces'])
->join([
'ReferentielTraces'=>[
'table'=>'referentiel_traces',
'type'=>'LEFT',
'conditions'=>'ReferentielTraces.code = Defauts.code_defaut'
]
]);
$cycle = $this->Cycles->find('all')
->where(['Cycles.id'=>$id])
->contain(['Quais',
'Defauts',
'Traces',
'Defauts.ReferentielTraces']);
但在第一种情况下,我遇到了这个问题(是的,抱歉,这是法语 ^^ ):
错误:SQLSTATE[42P01]:未定义的表:7 ERREUR:entrée manquante de la Clause FROM pour la table « defauts » LINE 1: ...ces ReferentielTraces ON ReferentielTraces.code = Defauts.co ... ^
这意味着“缺少表“默认值”的 FROM 子句条目。
在第二种情况下,我有这个:
错误:SQLSTATE [42883]:未定义函数:7 ERREUR:l'opérateur n'existe pas:整数 = 字符变化第 1 行:..._traces ReferentielTraces ON ReferentielTraces.id =(默认... ^
这意味着“我们无法比较整数和字符变化”,因为他们正在尝试比较 ReferentielTraces.id 和 Defauts.code_defaut
我还尝试制作一组加入,如 join([firstTable, secondTable ...])。但我没有关于 Defauts、Traces、Quais 和 ReferentielTraces 的数据。
下面是表之间的关系:
Cycles:
//Quais.id = Cycles.quai_id
$this->belongsTo('Quais', [
'foreignKey' => 'quai_id'
]);
//Defauts.cycle_id = Cycles.id
$this->hasMany('Defauts', [
'foreignKey' => 'cycle_id'
]);
//Traces.cycle_id = Cycles.id
$this->hasMany('Traces', [
'propertyName'=>'Traces',
'foreignKey' => 'cycle_id',
]);
Defauts:
//Defauts.code_defaut = ReferentielTraces.code
$this->belongsTo('ReferentielTraces',[
'className'=>'ReferentielTraces',
'foreignKey' => 'code_defaut'
]);
请问你能帮帮我吗?
解决方案
您可以使用 bindingKey ,它类似于以下内容:
//Defauts.code_defaut = ReferentielTraces.code
$this->belongsTo('ReferentielTraces',[
'className'=>'ReferentielTraces',
'foreignKey' => 'code_defaut',
'bindingKey' => 'code'
]);
推荐阅读
- javascript - 开玩笑| 酶如何测试在onClick事件期间是否正在调用组件内的函数?
- javascript - 如何使用 Jquery 或 javascript 清除缓存?
- java - 如何在 PDFBOX 中绘制填充多边形?
- windows - Windows 10:如何确定批处理文件是否正在从网络映射驱动器运行
- oracle - 想通过pl/sql程序将excel作为邮件附件发送
- flutter - Flutter 应用程序无法呈现错误“底部被无限像素溢出”
- typescript - 有没有办法在代码中触发打字稿编译器错误
- go - 使用 zipkin-go 完成追踪
- spring - 是否可以在春季为 bean 创建嵌套的自定义范围?
- python - Docker 无法运行