CakePHP belongsTo relationship with a variable 'model' field.
- by gomezuk
I've got a problem with a belongsTo relationship in CakePHP.
I've got an "Action" model that uses the "actions" table and belongs to one of two other models, either "Transaction" or "Tag". The idea being that whenever a user completes a transaction or adds a tag, the action model is created to keep a log of it. I've got that part working, whenever a Transaction or Tag is saved, the aftersave() method also adds an Action record. The problem comes when I try to do a find('all') on the Action model, the related Transaction or Tag record is not being returned.
actions:
id
model
model_id
created
I thought I could use the "conditions" parameter in the belongsTo relationship like this:
<?php
class Action extends AppModel {
var $name = 'Action';
var $actsAs = array('Containable');
var $belongsTo = array(
'Transaction' => array(
'foreignKey' => 'model_id',
'conditions' => array("Action.model"=>"Transaction")
),
'User' => array(
'fields' => array('User.username')
),
'Recommendation' => array(
'conditions' => array("Action.model"=>"Recommendation"),
'foreignKey' => 'model_id'
)
);
}
?>
But that doesn't work.
Am I missing something here, are my relationships wrong (I suspect so)? After Googling this problem I cam across something called Polymorphic Behaviour but I'm not sure this will help me.