Tabel coding
id | уровень1 | уровень2 | заглавие _____________________________________ 1 | 100 | 1 | номер один 2 | 100 | 2 | Номер два 3 | 101 | 1 | Компай 4 | 101 | 2 | ассоциация
Таблица Organizations
id | имя | тип | уровень ____________________________ 1 | Intel | 3 | 1 2 | IBM | 4 | 2
модель Organizations
class organizationsTable extends table
{
public function initialize(array $config)
{
$this->table('organizations');
$this->primaryKey('id');
$this->belongsTo('coding', [
'foreignKey' => 'type',
'joinType' => 'INNER',
],
'coding', [
'foreignKey' => 'level',
'joinType' => 'INNER']);
}
}
этот код$organization->find('all')->contain(['coding'])
только набор level
в ForeignKey, но я хочу установить level
а также type
иностранному ключу за столом organizations
я SQL запрос, как это
select * from organizations
inner join coding
on organizations.type=coding.id
inner join coding ccc
on organizations.level=ccc.id
Как создать соединение, как это?
РЕДАКТИРОВАТЬ
я пишу это, но говорю ошибку:organizations is not associated with coding
$this->belongsTo('yyyy', [
'foreignKey' => 'type',
'className' => 'coding'
],
'xxxx', [
'foreignKey' => 'level',
'className' => 'coding'
]);
в cakephp2 Несколько отношений к одной модели
но в cakephp3 попробуй вот так
$this->belongsTo('aliasName1', [
'foreignKey' => 'type',
'className' => 'coding'
]);
$this->belongsTo('aliasName2', [
'foreignKey' => 'level',
'className' => 'coding'
]);
контроллер
$organization->find('all')->contain(['aliasName1'])->contain(['aliasName2']);
Других решений пока нет …