将sql转换为蛋糕ORM

时间:2016-10-18 06:58:18

标签: orm cakephp-3.0

我有两张桌子:汽车和用户

汽车可以拥有所有者 - >表用户的外键  和驱动程序(可能与所有者不同) - >也是用户的外键

让我说我有一个特定的理由来使用这个查询:

$cars= json_encode($this->Cars->get($carsid[0]['id'], [
                        'contain' => ['Color','Model'] 
                        ]),JSON_HEX_APOS);

如果我添加'用户'在包含我将获得所有者用户而不是驱动程序

我如何获得驱动程序?

我已经尝试过innerJoin和匹配,但它似乎与get方法一起使用

1 个答案:

答案 0 :(得分:0)

手册说

  

如您所见,通过指定className键,可以使用   同一个表作为同一个表的不同关联。您可以   甚至创建自我关联的表来创建父子   关系:

所以你可以做到

class CarssTable extends Table
{

    public function initialize(array $config)
    {

        $this->belongsTo('Users', [
            'className' => 'Users',
        ]);


        $this->belongsTo('Drivers', [
            'className' => 'Users',
        ]);
    }
} 

所以你可以做到

'contain' => ['Drivers', 'Models' ...]