Je suis assez nouveau à cakephp et j'ai un problème avec une fonction compliquée find
sur mes modèles. J'ai un numéro de Groups
contenant chacun un nombre de Users
, et chaque groupe peut faire un nombre de Orders
. Chaque commande se compose d'un nombre de OrderAmounts
qui contient un amount
et un user_id
(relatif à un utilisateur).Problème avec les conditions d'exclusion dans le modèle complexe cakephp
J'ai une trouvaille qui trouve un ordre, et retourne tous les utilisateurs du Groupe relatifs à cette commande et tout OrderAmounts correspondant à cet utilisateur:
$currentOrder = $this->Order->find('first', array(
'conditions' => array(
'Order.group_id' => $this->Session->read("Auth.User.group_id")
),
'contain' => array(
'Group' => array(
'User' => array(
'OrderAmount' => array(
'OrderAmountType'
)
)
)
)
));
Ce que je veux maintenant faire est de retourner une liste de tous les Utilisateurs du Groupe relatifs à la Commande ci-dessus qui n'ont pas de OrderAmount correspondant.
Jusqu'ici j'ai ceci, mais je ne suis pas sûr où placer la condition pour exclure des utilisateurs avec OrderAmounts - si je place les conditions dans la partie de containes il enlève simplement les OrderAmounts du modèle, et si je les mets dans les conditions de niveau supérieur dans la recherche, je reçois une erreur.
$currentOrderOutstanding = $this->Order->Group->User->find('all', array(
'conditions' => array(
'Group.id' => $this->Session->read("Auth.User.group_id")
),
'fields' => array('User.id'),
'contain' => array(
'OrderAmount',
'Group'
)
));
Cela ne semble pas fonctionner pour moi ajoutant une condition à Tag (ou OrderAmount dans mon exemple original) - ajouter une condition à OrderAmount retourne simplement un tableau vide pour OrderAmounts qui ne correspondent pas aux conditions - il n'a pas effet sur les utilisateurs retournés - Cela semble aller à l'encontre de la description dans le manuel, mais je ne vois pas pourquoi – Loftx