2013-04-01 6 views
0

Я разрабатываю CMS с cakephp, у меня есть 2 таблицы, которые мне нужно фильтровать по некоторым параметрам, и для оптимизации я должен выполнить запрос, начиная с модели hasMany, простым способом будет делать это на модели «ownTo».Paginate на основе таблицы, содержащейся на cakephp

class Client extends AppModel { 
    public $actsAs = array('Containable'); 

    public $hasMany = array('Projects'); 
} 

class Project extends AppModel { 
    public $actsAs = array('Containable'); 

    public $belongsTo = array('Client'); 
} 

У меня есть условия в массиве $ conditions.

$this->paginate = array(
       'Client' => array(
        'limit' => 20, 
        'conditions' => $conditions, 
        'contain' => array(
         'Project' => array(
          //'limit' => 20 
         ) 
        ) 
       ) 
      ); 
$this->set('clients', $this->paginate('Client')); 

Таким образом, я получаю 20 клиентов и все проекты внутри каждого Клиента. Если я раскомментирую строку, я получаю 20 проектов внутри каждого из 20 Клиентов.

Я хочу полностью 20 проектов, не имеет значения, сколько клиентов (макс. 20).

Может ли кто-нибудь мне помочь?

Заранее спасибо.

ответ

-1

Если вы хотите показать проекты , вам необходимо развернуть проект ;

$this->paginate = array(
    'Project' => array(
     'limit' => 20, 
      'conditions' => $conditions, 

      // no need to set a limit on 'client', 
      // as each project belongs to only one client 
      'contain' => array(
       'Client' 
      ) 
     ) 
); 

$this->set('projects', $this->paginate('Project')); 

Это может быть nescessary добавить Project модель для вашего $uses массива внутри контроллера

Смежные вопросы