有人对如何直接依赖CakePHP 3中主查询字段中的值的SELECT中的子查询有任何建议或经验吗? 查询如下所示。
我正在尝试获取每个仓库中每个项目的OnHand值。我的物品和仓库清单将是动态的。一些用户可能会看到多达12个仓库和2K-3K物品。通过SQL查询,我可以获取一个包含每个项目包含3-12个元素的项目数组。一个很好的数组,可以轻松地循环显示。
我的查询对每个SQL有效。我收到约200个结果。我确定我已经以非蛋糕方式构建了子查询,但是我无法弄清楚如何在查询的选择部分内实现子查询。
我现在了解的问题不是直接与分页有关,而是与ResultSet(duh,错误消息从一开始就说)。我尝试了没有分页的查询。 稍后我会担心分页。只是
$query = $this->Inventory->Products->find('all', ['fields' => $select, 'conditions' => $conditions, 'order' => [$sort => $direction]]);
$ query-> all(),$ query-> toList()和$ query-> first()都产生相同的ResultSet错误。
CakePHP文档中的示例以及大多数(如果不是全部,我肯定我已经错过了某些东西,>>)示例)在堆栈的其他示例中显示查询的FROM或WHERE部分中的子查询或在表之间联接。
OR
我不正确地处理这个吗?我可以在不同的查询中获得相同的结果吗?
非常感谢所有帮助。谢谢。
[同样,感谢@ndm编辑我的帖子,以使其对读者更友好。你要努力:)
环境:
debug($select);
产量
[(int) 0 => 'Products.ItemCode', (int) 1 => 'Products.ItemName', ''03'' => '(SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '03')', ''04'' => '(SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '04')', ''05'' => '(SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '05')', ''06'' => '(SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '06')', ''07'' => '(SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '07')', ''08'' => '(SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '08')', ''09'' => '(SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '09')', ''14'' => '(SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '14')', ''15'' => '(SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '15')']
debug($conditions);
产量
['Products.validFor' => 'Y', 'Products.ItemCode LIKE ' => 'TCP%']
$this->paginate = [ 'fields' => $select, 'conditions' => $conditions, 'order' => [$sort => $direction] ]; $query = $this->Inventory->Products->find('all', $this->paginate); debug($query);
收益率
SELECT Products.ItemCode AS [Products__ItemCode], Products.ItemName AS [Products__ItemName], (SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '03') AS '03', (SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '04') AS '04', (SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '05') AS '05', (SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '06') AS '06', (SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '07') AS '07', (SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '08') AS '08', (SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '09') AS '09', (SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '14') AS '14', (SELECT OnHand FROM OITW WHERE ItemCode = Products.ItemCode AND WhsCode = '15') AS '15' FROM OITM Products WHERE (Products.validFor = :c0 AND Products.ItemCode like :c1) ORDER BY Products.ItemName ASC
$inventory = $this->paginate($query, ['limit' => 50]); debug($inventory);
收益率
传递给Cake \ ORM \ Entity :: __ construct()的参数1必须为数组类型,给定布尔值,在C:\ inetpub \ wwwroot \ vendor \ cakephp \ cakephp \ src \ ORM \ ResultSet.php中调用602
有人对如何直接依赖CakePHP 3中主查询字段中的值的SELECT中的子查询有任何建议或经验吗?查询是...
我试图通过]来对子查询进行蛋糕>
$select[] = $this->Inventory->find()->select([$key => 'OnHand'])->where(['WhsCode' => $key, 'ItemCode' => 'Products.ItemCode'])
;