Прежде всего позвольте мне отметить, что я новичок в средах MVC, поэтому не предполагаю никаких знаний в этой области.
У меня есть модель конструктора, я хочу получить связанные продукты длякаждый дизайнер, когда я получаю информацию от модели дизайнера.
Ассоциация не проста, поэтому торт не будет волшебным образом делать это для меня, поэтому мне нужно определить это самому.Я следовал учебным пособиям и думаю, что я близок, но не знаю, как все это связать.
У меня очень длинный запрос, который, если вы подключите designer_id в нужных местах, выберет все связанные продукты.
Я думаю, что я должен поместить этот запрос где-нибудь в модель Designer, чтобы он знал, как получить продукты.
Вот запрос, части строки, которые выглядят как{$__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';
}
Что мне нужно сделать, чтобы сделатьМодель разработчика использовать этот запрос для автоматического поиска связанных продуктов?