如何正确执行CakePHP 3中的LEFT连接?

时间:2017-02-08 03:31:41

标签: php mysql cakephp

我一直在尝试使用CakePHP 3的查询构建器格式,以便学习如何更好地使用它。但是,目前我似乎无法让左连接工作。

我希望在结果中收集两个表中的信息:

    $query = $this->find()->where(['userID' => $UID])->hydrate(false)->join([
        'table' => 'authgroups',
        'alias' => 'a',
        'type' => 'LEFT',
        'conditions' => 'a.id = userGroup'
    ]);

    return $query->toArray();

如果我正确读取CookBook,这应该可行 - 但是,它在一个与示例不同的模型中使用,结果只从该表返回,似乎忽略了连接。我需要在控制器中执行此操作吗?

1 个答案:

答案 0 :(得分:4)

这适用于模型:

我猜你的连接查询可能运行良好。在cakephp join中重要的是:

If you are joining table 'A' with table 'B' from table 'A' ,
By default it will select all fields from table A and no fields from table B.

您还需要从另一个表中选择一些字段:

$query = $this->find()->where(['userID' => $UID])->hydrate(false)->join([
    'table' => 'authgroups',
    'alias' => 'a',
    'type' => 'LEFT',
    'conditions' => 'a.id = userGroup'
 ])->autoFields(true) // selecting all fields from current table
   ->select(["a.field1,a.field2"]); // selecting some fields from table authgroups

return $query->toArray();
}

我不知道在cakephp文档中是否提供了这些东西。