J'essaie d'utiliser les associations à la volée pour réduire les données que je récupère, mais le modèle que j'utilise est associé à d'autres modèles avec un champ nommé à nouveau parce que j'ai 2 des mêmes modèles qui lui sont associés. Donc, voici le modèle, par exemple 'test', qui a deux champs 'user', tous deux liés au modèle User.CakePhp: associations à la volée utilisant un champ Modèle renommé?
Dans le modèle:
var $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id'
),
'User_Watched' => array(
'className' => 'User',
'foreignKey' => 'user_id_watched'
)
);
Lorsque je récupère les données relatives à « test », je veux récupérer uniquement les données particulières liés aux champs « User » et « » User_Watched sans aucune autre information imbriquée.
Mais quand je fais:
$this->User->unbindModel(array('hasMany' => array('something1', 'something2')), false);
puis something1 et les données de something2 ne montre pas le « Utilisateur » champ de modèle « test », mais est toujours récupérée pour le champ « User_watched ». Puis-je ne pas récupérer de données indésirables pour le champ 'User_watched'?
Hope this sens ... :)
Merci, benjamin. Pourquoi cela devrait-il se terminer par 'id'? Le champ réel dans le modèle 'Test' est 'user_id_watched'. J'ai résolu cela en utilisant 'joins'. – KcYxA
Hello KcYxA, Cakephp utilise l'approche 'Convention over Configuration', ce qui signifie que si un développeur s'en tient à certaines conventions, cakephp en échange réduit la quantité de configuration nécessaire. Dans le cas présent, 'user_id_watched' fonctionne comme un FK. FK dans cakephp devrait suivre la convention, donc le nom de champ dans la table devrait être 'user_watched_id'. Alors bien sûr, toutes les occurrences de l'ancien nom doivent être changées en conséquence. Si cela fonctionne pour vous, s'il vous plaît faites le moi savoir afin que je puisse faire fondre ce commentaire dans la réponse ci-dessus. Cordialement, Benjamin. – benjamin