с использованием связи HMBTM (заданной в обеих моделях).
Таблица ключевых слов действует как дерево, т.е. ключевые слова имеют между собой иерархические отношения.
Я использую сдерживаемое поведение.
Пользователь выбирает ключевое слово.
Я хочу, чтобы возвращаемые записи (проекты) ограничивались выбранным ключевым словом ИЛИ любым из дочерних элементов этого ключевого слова. Я пытаюсь повторно использовать свое индексное действие. Если ключевое слово не выбрано, отобразите стандартное представление индекса, если выбрано ключевое слово, затем найдите все дочерние ключевые слова, а затем отфильтруйте возвращенные проекты, указав те, у которых есть любой из идентификаторов ключевых слов.
Я пытался создать массив дочерних (и исходных) идентификаторов ключевых слов, но не могу понять, как заставить этот массив стать фильтром в моем действии поиска.
Я пробовал использовать :
Код: Выделить всё
$this->Project->find('all',
array(
'contain' => array('Keyword.id'=>array($childkeywords))
)
);
Я чувствую, что хочу сделать что-то довольно простое, но чувствую, что ухожу все дальше от решения. Нет ли стандартного способа ограничить записи набором идентификаторов связанной модели?
Ура!
С помощью Пауло у меня теперь есть:
Код: Выделить всё
$this->Project->find('all', array(
'fields' => array('id','title','country', 'project_ref'),
'type' => array('inner'),
'contain' => array('Keyword' => array(
'conditions' => array('Keyword.id' => $childkeywords)
)
)
)
)
Подробнее здесь: https://stackoverflow.com/questions/128 ... l-by-array