CakePHP поиск в hasMany отношениях - PullRequest
1 голос
/ 10 августа 2010

У меня есть модель Контент, который принадлежит категориям, имеет много издателей, а издатель принадлежит городу. Существует также форма поиска, в которой кто-то выбирает из выпадающего списка, какую категорию просматривать и какой город.

Но как я могу объединить эти два в одном условии paginate? Я имею в виду, я не могу сделать что-то вроде:

$this->paginate('Content',array('conditions' =>array('Category.id'=>$category,
'City.id'=>$city)));

потому что для получения торта городов выполняется другой запрос.

И я не могу сделать что-то вроде:

$this->paginate('Content',array('conditions' =>array('Category.id'=>$category),
 'contain'=>array('Publisher.City'=>array('conditions'=>array(City.id'=>$city)))));

, потому что это будет искать в соответствии с категорией и фильтровать результаты города по $ city.

Я знаю, что могу сделать что-то вроде:

$this->Content->Publisher->City->find(...)

но это изменит вывод моих разбитых на страницы данных.

Что я обычно делаю, это пишу свой пользовательский запрос, где я оставляю все модели и отфильтрую результаты в WHERE. Но я хотел спросить, есть ли еще какой-нибудь торт (sic)!

спасибо

1 Ответ

0 голосов
/ 27 мая 2011

Я испытал то же самое, когда впервые попробовал создать простую поисковую систему с отношениями hasmany.

Я использовал несколько $this->find() и назначил их в переменной, а затем в используемом коде пагината $this->paginate(array_merge(name of the variables used in $this->find()));.

надеюсь, это поможет вам ...

~ gio

...