Я пытаюсь получить список идентификаторов (а-ля find('list')
), но не могу понять, как это сделать с соответствующими условиями модели.
Мои ассоциации:
Product hasAndBelongsToMany Category
Product belongsTo Manufacturer
Я хочу найти список идентификаторов продуктов, которые есть в списке идентификаторов категорий и имеют определенного производителя seo_url. Я пробовал множество контейнеров с условиями, условиями, ссылающимися на другие модели, даже пытался использовать find ('all'), чтобы посмотреть, сработают ли мои условия, но ничего не смог получить.
Мне удалось получить один с Product-> query (), но это не в формате списка. Я мог бы циклически перемещаться по массиву и захватывать идентификаторы или что-то еще, но это кажется ужасно не-Cakey. Я хочу убедиться, что Cake по-прежнему выполняет все проверки безопасности моих запросов и любых других автоматических операций. Вот запрос, который я получил на работу:
$all_results = $return['Category']['all_results'] = $this->Product->query('
SELECT `Product`.`id`
FROM `categories_products` as `CategoriesProduct`
JOIN `products` as `Product` ON (`CategoriesProduct`.`product_id` = `Product`.`id`)
JOIN `manufacturers` as `Manufacturer` ON (`Product`.`manufacturer_id` = `Manufacturer`.`id` AND `Manufacturer`.`seo_url` = \''.$manufacturer.'\')
WHERE `CategoriesProduct`.`category_id` IN ('.implode(',', $search_categories).')
');
это возвращает
[all_results] => Array
(
[0] => Array
(
[Product] => Array
(
[id] => 101787
)
)
[1] => Array
(
[Product] => Array
(
[id] => 100781
)
)
[2] => Array
(
[Product] => Array
(
[id] => 101887
)
)
[3] => Array
(
[Product] => Array
(
[id] => 101888
)
)
)
Примечание: $search_categories
- это список идентификаторов категории (то есть: array(12,42,24,5)
)