2016-11-16 228 views
0
  • 订购HasOne亚目
  • 亚目属于关联订购

我需要在亚纲的字段顺序排序,而是由虚拟领域的排序似乎已被删除在蛋糕3.XCakePHP的3排序与HasOne关系关联的模型

OrdersTable.php,我有

$this->hasOne('Suborder', [ 
     'className' => 'Suborders', 
     'foreignKey' => 'order_id', 
     'strategy' => 'select', 
     'conditions' => function ($exp, $query) { 
      return $exp->add(['Suborder.id' => $query 
       ->connection() 
       ->newQuery() 
       ->select(['SSO.id']) 
       ->from(['SSO' => 'suborders']) 
       ->where([ 
        'Suborder.order_id = SSO.order_id', 
        'SSO.suborder_type_id in' => [1, 2, 3] 
       ]) 
       ->order(['SSO.id' => 'DESC']) 
       ->limit(1)]); 
     } 
    ]); 

OrdersController.php,我有

$this->paginate = [ 
     'limit' => 20, 
     'order' => ['id' => 'desc'], 
     'sortWhitelist' => [ 
      'id', 
      'title', 
      'client_order', 
      'substatus', 
      'Workflows.order_status_id', 
      'Clients.name', 
      'ProductTypes.type', 
      'Suborder.due_date', 
      'Suborder.created', 
     ], 
    ]; 

    $orders = $this->paginate($collection); 

index.ctp,我有

$this->Paginator->sort('Suborder.created', 'Order Placed'), 
    $this->Paginator->sort('Suborder.due_date'), 

,我得到的错误是Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Suborder.created' in 'order clause'。如何让Cake在排序和分页的初始查询中包含Suborder?

编辑:

$collection = $this->Orders->find() 
     ->contain([ 
      'Clients', 
      'CurrentAssignment.Users', 
      'Workflows.OrderStatuses.Category', 
      'Workflows.OrderStatuses.Departments' => function ($q) use ($uID) { 
       return $this->Departments->find()->matching('Users', function ($q) use ($uID) { 
        return $q->where(['Users.id' => $uID]); 
       }); 
      }, 
      'ClientProducts.ProductTypes', 
      'Reviews' => function ($q) { 
       return $q->where(['review_type_id is not' => 6]); 
      }, 
      'Reviews.ReviewTypes', 
      'PublicNotes', 
      'ActiveReview', 
      'Suborder', 
      'Suborder.SuborderTypes', 
      'Suborders.SuborderTypes', 
     ]); 

$collection修饰有150线的何在,orWheres,并加入基于一些条件。

+0

的时候看到的原因是使用CakePHP的人有种明显的,它可能仍然依赖于准确'$ collection'是什么! – ndm

回答