cakephp3 два внешних ключа к той же модели

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'
]);

2

Решение

в cakephp2 Несколько отношений к одной модели

но в cakephp3 попробуй вот так

$this->belongsTo('aliasName1', [
'foreignKey' => 'type',
'className' => 'coding'
]);
$this->belongsTo('aliasName2', [
'foreignKey' => 'level',
'className' => 'coding'
]);

контроллер

$organization->find('all')->contain(['aliasName1'])->contain(['aliasName2']);
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector