2016-11-16 223 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

回答