Hello all,
I've been struggling on this for the last two days. I'm creating a
webshop on which people should be able to filter products on multiple
tags. Database structure is the following:
Tags => Id | Name
Products => Id | Category_id | Name | etc...
Tags_Products | Id | Product_id | Tag_id
Categories | Id | parent_id | name
The user can first select a category and each category has
subcategories which have products which have their tags. So after
they've selected a category or subcategory they can filter down using
the tags of the products in the categories.
For the find query i made next options array:
Array ( [fields] => Array ( [0] => DISTINCT Product.id [1] =>
Product.* ) [conditions] => Array ( [OR] => Array
( [Product.Category_id] => 1 [Category.parent_id] => 1 ) [AND] =>
Array ( [AND] => Array ( [FilterTag.name] => Array ( [0] => smartphone
[1] => apple ) ) ) ) )
The 'FilterTag' is a fake model made in the function beneath:
'hasOne' => array(
'ProductsTag',
'FilterTag' => array(
'className' => 'Tag',
'foreignKey' => false,
'conditions' => array('FilterTag.id =
ProductsTag.tag_id'),
'unique' => true,
)
Now the problem is that i want it to find products that have both tags
in stead of one of the tags. It currently does the next query:
SELECT DISTINCT `Product`.`id`, `Product`.*, `Product`.`id` FROM
`products` AS `Product` LEFT JOIN `categories` AS `Category` ON
(`Product`.`category_id` = `Category`.`id`) LEFT JOIN `products_tags`
AS `ProductsTag` ON (`ProductsTag`.`product_id` = `Product`.`id`) LEFT
JOIN `tags` AS `FilterTag` ON (`FilterTag`.`id` =
`ProductsTag`.`tag_id`) WHERE ((`Product`.`Category_id` = '1') OR
(`Category`.`parent_id` = 1)) AND `FilterTag`.`name` IN ('smartphone',
'apple')
So it looks for products which have one of the tags. But i want it to
search for products that have both of the tags.
I hope you guys can help me, Thanks in advance!
Dwayne
--
Our newest site for the community: CakePHP Video Tutorials
http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others
with their CakePHP related questions.
To unsubscribe from this group, send email to
[email protected] For more options, visit this group at
http://groups.google.com/group/cake-php