Question

First time using Cake and its containable behaviour, but it's not working as expected ... or at all.

I'm trying to obtain a list of accessories for a product. Product model HABTM products (alias 'ProductRelation'). Join table is products_products which has two product ids - product_id and related_id. It's against this I want to pull the list of accessories (products driven from the related_id column) for a given product_id

In my Product model, I've added $actsAs = array('Containable');

And in my controller, a quick test of containable using reference from the cookbook fails to contain products at all, even without conditions.

debug($this->Product->find('all', array('contain' => 'ProductRelation')));

.. returns an array of every product in the db, with ALL related models - images, content tabs, ratings, reviews, pricing, etc I haven't tried applying any 'conditions' against this because the call as written should limit data to the product and it's ProductRelation data, according to the cookbook ...

Any tips?

Was it helpful?

Solution

It seems like you have recursive on. Try using the following:

debug($this->Product->find('all', array(
    'contain' => 'ProductRelation',
    'recursive' => -1
)));

If that works for you, you should start adding containable to the AppModel class and setting the recursive property to -1. This will ensure you only ever get the results you request.

NB: Cake does not join for HABTM, so you can not use ProductRelation in any conditions.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top