2010-08-10 5 views
1

У меня есть модель Содержимое, которое принадлежит категориям, hasMany Publishers и Publisher принадлежит городу. Существует также форма поиска, в которой кто-то выбирает из раскрывающегося списка, какую категорию можно просмотреть и какой город.CakePHP search in hasMany relations

Но как я могу объединить эти два в одном состоянии 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))))); 

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

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

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

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

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

благодаря

ответ

0

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

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

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

~ Gio