2013-01-22 40 views
0

我正在使用可包含行爲來查看多個表。使用CakePHP分頁和可包含的行爲創建複雜條件

$this->paginate = array(
     'contain' => array(
      'Co' => array('fields' => array('ref')), 
      'CoItemType' => array('fields' => array('name')), 
      'Casing' => array(
       'fields' => array('id','barcode','CONCAT(plant_dot,size_dot,product_line_dot,production_week) as dot'), 
       'Customer' => array('fields' => array('company_name')), 
      ) 
     ) 
    ); 

這個按預期工作。不過,我正在將這與jQuery數據表集成在一起,並且dataTables通過的方式並不指定字段。所以我想這樣做的條件之外包含這樣的...

'conditions' = array(
     'OR' => array(
      array("Table.field_name LIKE " => '%'.$parameter.'%'), 
      array("Table.field_name LIKE " => '%'.$parameter.'%'), 
      array("Table.field_name LIKE " => '%'.$parameter.'%') 
     ) 
    ) 

當然,由於中可容納的行爲要你包括包含數組中的表項下的條件下,這是不可能的。這是令人沮喪的,有沒有人有解決方案或繞過這個問題的解決方法?

我正在使用CakePHP 2.x

+0

提示:在這裏爲你的CONCAT使用虛擬字段。這樣你可以得到更清晰的結果數組。 – mark

+0

這是一個很好的提示,但沒有解決可容忍行爲的侷限性。 CakePHP simple不能做到這一點,因爲它將可容納分割爲多個查詢。我最好自己寫SQL。 – systematical

+0

然後使用可鏈接或其他一些行爲或自定義綁定您的連接。這樣你仍然可以在這裏使用包裝器方法。 – mark

回答