cakephp查询构建器无法正常工作

时间:2016-09-13 16:21:29

标签: cakephp cakephp-3.0

我有一个查询

$p = $this->Products
  ->findById($id)
->select(['name'])
  ->contain(['Categories.Sizes' => function($q) {
         return $q->select(['id', 'name']); 
    } 
  ]);

仅返回产品的名称而不是产品类别的大小。但是如果删除接受字段名称的select函数,那么它也会传递大小

有没有解决方案?

1 个答案:

答案 0 :(得分:1)

根据CakePHP 3的书,在“Selecting Rows From A Table”区域中,您可以通过将它们包含在select数组中来指定要返回的字段:

$query = $articles
    ->find()
    ->select(['id', 'name']) // <-- Notice this line
    ->where(['id !=' => 1])
    ->order(['created' => 'DESC']);

因此,对于您而言,您限制了返回的字段,因为您指定只需要“名称”字段。