Я знаю, что ассоциации Cake HABTM в лучшие времена сложны, но я, кажется, усложняю себе жизнь ...
Если я хочу вернуть случайный Предмет из БД, Я могу сделать это следующим образом в модели Item:
$random = $this->find('first', array(
'order' => 'rand()'
));
, и если я хочу найти все Предметы, которые находятся в определенной Категории (где Item имеет отношение HABTM к Категориям), я знаю, чтоможно получить набор результатов через $ this-> Categories-> find.
Мой вопрос: как я могу объединить два, чтобы я мог вернуть случайный элемент, который принадлежит указанной категории?Есть ли простой способ?(Если нет, я с удовольствием приму любые предложения для трудоемкого способа, пока он работает;)
ETA: я могу получить некоторые пути с помощью Containable, может быть: скажем, я добавлю строку
'contain' => array('Categories'=>array('conditions'=>array('Categories.id'=>1))),
тогда результат Item, который я не хочу возвращать с пустым массивом Categories, чтобы отличить их от "хороших" элементов.Но на самом деле я не хочу, чтобы результаты Item возвращались вообще ...
ETA (2): я могу обойтись, сбросив результаты в afterFind, если массив Categories пуст (спасибона http://nuts -and-bolts-of-cakephp.com / 2008/08/06 / filtering-results-возвращено-byableable-поведение / для подсказки), а затем мой случайный поискфункция не сдается до тех пор, пока не получит результат:
while (!is_array($item)) {
$item = $this->random($cat);
}
но тьфу, это может быть какой-нибудь более грубым?В любом случае, пора мне прекратить редактировать свой вопрос и вместо этого уйти и спать на нем!