2016-03-31 8 views
0

も条件の多くを持っていますが、私はここでそれを単純化したかったです。これはモデルに行くべきだと参加二つのモデル

$Table = $this->Table->query(' 
SELECT Table.id FROM Table 
       INNER JOIN TableA ON Table.id = TableA.table_id 
       INNER JOIN TableA.Table_id = TabelB.id 
       WHERE 
       IFNULL(Table.x,0) <> 0 
       GROUP BY Table.id 
       HAVING COUNT(*) > 1'); 


$this->paginate = array(
'paramType' => 'querystring' 
,'joins' => $Table 
    )   
); 

私はSQLの背景から、より来て、ケーキとその快適NTOんだけど、これはコントローラで行うことができますかですか?私は、「サブクエリとコントローラのページネーション」に同じ質問に答えたよう

+0

ため同じ答えですコードと一致させる – Salman

答えて

0

ここで私は、ページネーションの魔女とbindModelの実施例は、私のために働いているポストこの質問ここ

$this->paginate = array(
'paramType' => 'querystring', 
'joins' => array(
    array(
    'table' => '(SELECT Table.id 
       FROM Table 
       INNER JOIN TableA ON Table.id = TableA.Table_id 
       INNER JOIN TableB ON TableA.TableB_id = TableB.id 
       WHERE 
       1 = 1 
       GROUP BY Table.id 
       HAVING COUNT(*) = 1)' 
     'alias' => 'Table_x', 
     'type' => 'INNER', 
     'conditions' => array('Table_x.id = Table.id') 
     ) 
    ) 
); 


$Table = $this->paginate(); 
0
$UserId = $this->Auth->user(id); 
$this->Rate->bindModel(array('belongsTo'=>array('Vehicle'=>array('className'=>'Vehicle','foreignKey'=>'vehicle_id'),),),false); 

    $this->paginate = array('conditions'=>array('Rate.user_id'=>$UserId), 
         'order'  => array('Rate.created DESC'), 
         'limit'  =>'2' 
         );  
    $rating = $this->paginate('Rate');