首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化CakePHP 3 ORM查询

优化CakePHP 3 ORM查询
EN

Stack Overflow用户
提问于 2016-08-19 15:55:27
回答 1查看 288关注 0票数 0

我有一个查询看起来

代码语言:javascript
复制
$entity = $this->Products
  ->findById($id)
  ->contain( [ 'Categories',
  'Categories.Sizes',
  'ProductsPrices.Sizes' => function($q) { 
      return $q->select('Sizes.name');
    }
 ])->first();

在这种情况下,Product,belongTo,a,Category,以及Category hasMany,Sizes,Similerly Product的价格取决于它的大小。

例如,如果一个产品有4个不同的大小,那么它将在ProductsPrices表中有4个价格。

查询正在返回所需的结果,但问题是它正在从每一行返回所有字段。例如,从Categories表中,我只需要它的名称。来自Categories.Sizes的唯一id和名称

我能把它限制在我需要的领域吗?我试过在不同级别上使用->select,但没有起作用。例如,'ProductsPrices.Sizes',我只看到大小查询,而不是ProductsPrices查询

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-19 16:16:37

阅读更多信息:

http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html

代码语言:javascript
复制
$entity = $this->Products
  ->findById($id)
  ->contain( [
   'Categories' => function($q){
      return $q->select(['name'])
        ->contain([
           'Sizes' => function($q) {
              return $q->select(['id','name']);
            }
        ]);
   },
   // -------------

 ])->first();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39043277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档