Nasıl ilişkili modeller bulmak için bir model nasıl anlarsınız?

0 Cevap php

Öncelikle o bölgede herhangi bir bilgi düşünmeyin bana MVC çerçeveler yeni am not edelim.

Ben tasarımcı modelden bilgi almak zaman her tasarımcı için ilişkili products çekmek istiyorum, bir Tasarımcı modeli var.

Dernek bu yüzden pasta sihirli yüzden bu kendimi tanımlamak gerekiyor benim için yapmayacağım basit değildir. Ben öğreticiler takip etmekte ve ben yakın ama bunu hep birlikte kravat nasıl emin olduğumu düşünüyorum.

Sana doğru yerlerde designer_id fiş eğer tüm ilişkili ürünler seçmek olacağı çok uzun bir sorgu var.

Ben bunu ürünlerini almak için nasıl bilir böylece Tasarımcısı modelinde bir yerde bu sorguyu koymak gerekiyordu düşünüyorum.

İşte sorgu, gibi bakmak dize parçaları {$__cakeID__$} ile değiştirilmesi gerekir 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
)

Ayrıca burada tasarımcı modeli:

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';
}

What would I need to do to make the Designer model use this query to automatically find its associated products?

0 Cevap