J'ai un problème avec une relation belongsTo dans CakePHP.
J'ai un modèle "Action" qui utilise la table "actions" et appartient à l'un des deux autres modèles, "Transaction" ou "Tag". L'idée est que chaque fois qu'un utilisateur effectue une transaction ou ajoute une balise, le modèle d'action est créé pour en garder une trace. J'ai réussi à faire fonctionner cette partie, chaque fois qu'une transaction ou un tag est sauvegardé, la méthode aftersave() ajoute également un enregistrement d'action. Le problème est que lorsque j'essaie de faire un find('all') sur le modèle d'action, l'enregistrement de la transaction ou du tag correspondant n'est pas renvoyé.
actions :
id
model
model_id
created
Je pensais que je pouvais utiliser le paramètre "conditions" dans la relation belongsTo comme ceci :
<?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'
)
);
}
?>
Mais ça ne marche pas.
Est-ce que quelque chose m'échappe, mes relations sont-elles fausses (je le soupçonne) ? Après avoir cherché ce problème sur Google, je suis tombé sur un outil appelé Comportement polymorphe mais je ne suis pas sûr que cela m'aidera.