I have a table called processo_administrativo that has and belongs to many processo_administrativo through processo_administrativo_processo_administrativo
Both tables have id "identity(1,1)"
The join table, processo_administrativo_processo_administrativo have these columns:
both processo_administrativo_id and processo_administrativo_associado_id references to processo_administrativo.id
So, I've tried this on ProcessoAdministrativoTable :
$this->belongsToMany('ProcessoAdministrativo', [
'targetForeignKey'=> 'processo_administrativo_associado_id',
'foreignKey'=> 'processo_administrativo_id'
])
->setThrough('ProcessoAdministrativoProcessoAdministrativo');
And tried this find with contain:
$result = $paTable->find()->contain('ProcessoAdministrativo')
->where(['id IN'=>[2947,3694]])
->toArray();
debug($result);
But Cake did this (in the second query):
....
FROM
processo_administrativo ProcessoAdministrativo
INNER JOIN processo_administrativo_processo_administrativo ProcessoAdministrativoProcessoAdministrativo ON ProcessoAdministrativo.id = (
ProcessoAdministrativoProcessoAdministrativo.processo_administrativo_id
)
WHERE
ProcessoAdministrativoProcessoAdministrativo.processo_administrativo_id in (2947, 3694)
As you can see, for some reason CakePHP simply ignored the targetForeignKey (processo_administrativo_associado_id). I don't know why.
And the result are two ProcessoAdministrativo entities with no attributes and values from the database.
So, what could be the correct way to setup this association?