cakePHP 3-SELECT中的带有分页的子查询生成错误“参数1传递给Cake \ ORM \ Entity :: __ construct()”

问题描述 投票:0回答:1

我的查询对每个SQL有效。我收到大约200个结果,并且可能有数千个结果,因此我需要分页。我确定我已经以非蛋糕的方式构建了子查询,但是我不知道如何在查询的选择部分内实现子查询。

环境:

  • CakePHP 3.8.6
  • PHP 7.3.7
  • MSSQL 2014

非常感谢所有帮助。谢谢。

控制器代码=>索引方法

debug($select);

收益= = [(int)0 =>'Products.ItemCode',(int)1 =>'Products.ItemName',''03''=>'(从OITW WHERE ItemCode = Products.ItemCode AND WhsCode ='03')中选择手,'''04''=>'(从OITW WHERE ItemCode = Products.ItemCode AND WhsCode ='04')中选择手,',''05''=>'(从OITW WHERE ItemCode = Products.ItemCode AND WhsCode ='05')中选择手,',''06''=>'(从OITW WHERE ItemCode = Products.ItemCode AND WhsCode ='06')中选择手,',''07''=>'(从OITW WHERE ItemCode = Products.ItemCode AND WhsCode ='07'的Select OnHand)',''08''=>'(从OITW WHERE ItemCode = Products.ItemCode AND WhsCode ='08')中选择手,',''09''=>'(从OITW WHERE ItemCode = Products.ItemCode AND WhsCode ='09'的Select OnHand)',''14''=>'(从OITW WHERE ItemCode = Products.ItemCode AND WhsCode ='14')中选择OnHand'',” 15” =>'(从OITW WHERE ItemCode = Products.ItemCode AND WhsCode ='15')中选择手]]

debug($conditions);

Yields => ['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],(从OITW WHERE ItemCode = Products.ItemCode AND WhsCode ='03'的OnHand选择)AS'03',(从OITW WHERE的ItemCode = Products.ItemCode和WhsCode ='04'的OnHand中选择)AS'04',(从OITW WHERE的ItemCode = Products.ItemCode和WhsCode ='05'的OnHand中选择)AS'05',(从OITW WHERE的ItemCode = Products.ItemCode AND WhsCode ='06'的OnHand中选择)AS'06',(从OITW WHERE的ItemCode = Products.ItemCode AND WhsCode ='07'的OnHand中选择)AS'07',(从OITW WHERE的ItemCode = Products.ItemCode AND WhsCode ='08'的OnHand中选择)AS'08',(从OITW WHERE的ItemCode = Products.ItemCode和WhsCode ='09'的OnHand中选择)AS'09',(从OITW WHERE的ItemCode = Products.ItemCode和WhsCode ='14'的OnHand中选择)AS'14',(从OITW WHERE的ItemCode = Products.ItemCode和WhsCode ='15'的OnHand中选择)AS'15'从OITM产品所在的位置(Products.validFor =:c0 AND Products.ItemCode类似于:c1)ORDER BY Products.ItemName ASC

$inventory = $this->paginate($query, ['limit' => 50]);
debug($inventory);

Yields =>“传递给Cake \ ORM \ Entity :: __ construct()的参数1必须为数组类型,给定布尔值,在C:\ inetpub \ wwwroot \ vendor \ cakephp \ cakephp \ src \ ORM \ ResultSet中调用.php行602“

sql-server cakephp pagination subquery cakephp-3.0
1个回答
0
投票

您可以尝试

$inventory = $this->paginate($query->all(), ['limit' => 50]);
© www.soinside.com 2019 - 2024. All rights reserved.