Во-первых, позвольте мне отметить, что я новичок в MVC-фреймворках, поэтому не предполагайте никаких знаний в этой области.
У меня есть модель дизайнера, и я хочу получить связанные продукты для каждого дизайнера, когда получаю информацию из модели дизайнера.
Ассоциация непростая, поэтому торт не сделает это за меня волшебным образом, поэтому мне нужно определить это самостоятельно. Я следил за учебниками, и я думаю, что я близок, но не уверен, как связать все это вместе.
У меня есть очень длинный запрос, что если вы подключите Designer_id в нужных местах, он выберет все связанные продукты.
Я думаю, что я должен поместить этот запрос где-нибудь в модель конструктора, чтобы он знал, как получить продукты.
Вот запрос, части строки, которые выглядят как {$__cakeID__$}
, нужно заменить на designer_id
:
SELECT *, COUNT(DISTINCT tags.name) AS uniques
FROM products, products_tags, tags, designers, designers_tags
WHERE products.id = products_tags.product_id
AND tags.id = products_tags.tag_id
AND tags.id IN (
SELECT t.id
FROM tags t
LEFT JOIN designers_tags dt ON dt.tag_id = t.id
LEFT JOIN designers d ON d.id = dt.designer_id
WHERE d.id ={$__cakeID__$}
AND dt.include =1
)
AND products.id NOT IN (
SELECT products.id
FROM products, products_tags, tags
WHERE products.id = products_tags.product_id
AND tags.id = products_tags.tag_id
AND tags.id IN (
SELECT t.id
FROM tags t
LEFT JOIN designers_tags dt ON dt.tag_id = t.id
LEFT JOIN designers d ON d.id = dt.designer_id
WHERE d.id ={$__cakeID__$}
AND dt.include =0
)
)
AND designers.id = designers_tags.designer_id
AND designers_tags.tag_id = tags.id
GROUP BY products.id
HAVING uniques = (
SELECT COUNT(d.id) AS tag_count
FROM tags t
LEFT JOIN designers_tags dt
ON dt.tag_id = t.id
LEFT JOIN designers d
ON d.id = dt.designer_id
WHERE d.id = {$__cakeID__$}
AND dt.include =1
GROUP BY d.id
)
Также вот дизайнерская модель:
class Designer extends AppModel
{
var $name = 'Designer';
var $actsAs = array('Sluggable' => array('separator' => '-', 'overwrite' => false, 'label' => 'name'));
var $hasAndBelongsToMany = 'Tag';
var $hasOne = 'AlternateName';
var $hasMany = 'Vote';
}
Что мне нужно сделать, чтобы модель Designer использовала этот запрос для автоматического поиска связанных продуктов?
include
, если оно ложно, то никакие продукты с этими тегами НЕ должны быть включены. Таким образом, я могу создать категорию и выбрать, какие теги должны или не должны быть у продуктов, чтобы быть включенными в категорию. Есть смысл? - person JD Isaacks   schedule 22.12.2010