php—如何在CakePHP3.6中从一个表中选择所有记录,并从另一个表中选择一些记录

wr98u20j  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(280)

选择mytable.*、othertable.foo、othertable.bar。。。
如何用cakephp编写上述查询?我试过了,但没用。

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

它给我的错误接近 SELECT Fees.* AS 费用__* . 因此,我必须编写article表的所有列。

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

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

mwyxok5s

mwyxok5s1#

你可以这样做:

$this->Articles->find('all')->contain(['Categories' => function($q) {
                    return $q->select('Categories.name');
                }])->select($this->Articles);
``` `$this->Articles` 在select语句中,将从articles表中获取所有记录并 `$q->select('Categories.name')` 将仅从关联的类别表中获取类别名称。
裁判:https://github.com/cakephp/cakephp/issues/7913
km0tfn4u

km0tfn4u2#

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

相关问题