如何在cakephp 3.6中从一个表中选择所有记录,并从另一个表中选择一些记录

时间:2018-09-04 09:30:36

标签: php mysql cakephp cakephp-3.0

选择myTable。*,otherTable.foo,otherTable.bar ...

  

我们如何在cakephp中编写以上查询?我试过了,但是没用。

$data = $this->Articles->find()->select(['Articles.*','Categories.name'])->innerJoineWith('Categories');

它给我SELECT Fees.* AS费用__ * {.}附近的错误

因此,我必须写文章表的所有列。

$data = $this->Articles->find()->select(['Articles.id','Articles.name','Articles.title','Articles.description','Categories.name'])->innerJoineWith('Categories');

cakephp中有什么解决方案吗?请告诉我。谢谢。

2 个答案:

答案 0 :(得分:0)

您可以这样做:

$this->Articles->find('all')->contain(['Categories' => function($q) {
                    return $q->select('Categories.name');
                }])->select($this->Articles);
  select语句中的

$this->Articles将从中获取所有记录   Articles表和$q->select('Categories.name')将仅获取   关联的“类别”表中的类别名称。

参考:https://github.com/cakephp/cakephp/issues/7913

答案 1 :(得分:0)

$data = $this->Articles->find()
        ->select($this->Articles)
        ->select(['Categories.name'])
        ->innerJoineWith('Categories');