I have a CakePHP plugin named Foo
that has a component, no controller, and several joined models. It's structured like this:
/Plugin/Foo/Model/
-FooModel1.php
-FooModel2.php
-FooModel3.php
-FooModel4.php
In order to connect with the standard (non-plugin) code, one of the plugin models is conditionally associated with a standard model called Bar
. I don't believe this is relevant to the problem, but I want to be thorough.
In FooController
I make use of Containable
, several layers deep:
$params = array(
'conditions' => array('Bar.id' => $bar_id),
'contain' => array(
'FooModel1' => array(
'FooModel2' => array(
'FooModel3' => array('Something', 'FooModel4')
),
),
),
);
This creates an error like:
Warning: Model "FooModel2" is not associated with model "FooModel3" [CORE\Cake\Model\Behavior\ContainableBehavior.php, line 339]
So in my plugin controller I need to contain plugin models. I've tried prefixing the models with Foo (e.g. Foo.FooModel1
) but Containable
thinks I'm trying to get a model named Foo. In the $hasAndBelongsToMany
array in the plugin models I've tried both 'Model1' => array()
and 'Foo.Model1' => array()
, neither of which work. How do I correctly set up this association?
Side note: when I move the models out of the plugin and into the standard /Model/
directory everything works fine. The problem seems to come from incorrect associations rather than the logic of the code itself.
Thanks a lot for the help.