dongmu5920
2015-04-06 13:42 阅读 33
已采纳

cakephp3两个外键同型号

Tabel coding


id |  level1  |  level2  |  title
_____________________________________
1  |  100     |  1       |  numberOne
2  |  100     |  2       |  NumberTwo
3  |  101     |  1       |  Compay
4  |  101     |  2       |  association

Table Organizations

id  | name  |  type  | level
____________________________
1   | intel |  3     |  1 
2   | IBM   |  4     |  2

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

    }
}

this code$organization->find('all')->contain(['coding']) only set level to foreignKey but i want set level and type to foreignKey for table organizations

i sql query like this

select * from organizations inner join coding on organizations.type=coding.id inner join coding ccc on organizations.level=ccc.id

how create join like this?

EDIT

i write this but say error :organizations is not associated with coding

$this->belongsTo('yyyy', [
    'foreignKey' => 'type',
    'className' => 'coding' 
    ],
    'xxxx', [
    'foreignKey' => 'level',
    'className' => 'coding'
]);
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    dongmacuo1193 dongmacuo1193 2015-04-07 04:00

    in cakephp2 Multiple relations to the same model

    but in cakephp3 try like this

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

    Controller

    $organization->find('all')->contain(['aliasName1'])->contain(['aliasName2']);
    
    点赞 8 评论 复制链接分享

相关推荐