我有两张桌子:汽车和用户
汽车可以拥有所有者 - >表用户的外键 和驱动程序(可能与所有者不同) - >也是用户的外键
让我说我有一个特定的理由来使用这个查询:
$cars= json_encode($this->Cars->get($carsid[0]['id'], [
'contain' => ['Color','Model']
]),JSON_HEX_APOS);
如果我添加'用户'在包含我将获得所有者用户而不是驱动程序
我如何获得驱动程序?
我已经尝试过innerJoin和匹配,但它似乎与get方法一起使用
答案 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' ...]