Bonjour, je suis Grafikart depuis un bon bout de temps et j'ai appris énormément de chose grâce à lui. Aujourd'hui je me tourne vers vous car je ne vois pas comment rendre ce code juste aux normes de CakePHP. Je pense qu'il est possible de rendre cette sous-requête correctement mais je n'y arrive pas. Comme ça, ça fonctionne sur mon local mais je n'ai pas encore testé sur le serveur. Une autre requête de ce style (requête sql dure) ne fonctionne pas sur le serveur.
Merci à vous.
$random = $this->Defy->find('first',array(
'conditions' => array(
'Defy.domain_id' => $data'Challenge']'domain_id'],
'Defy.level_id' => $data'Challenge']'level_id'],
"Defy.id NOT IN (SELECT DISTINCT defy_id
FROM challenge_defies, challenges, users
WHERE challenge_defies.challenge_id = challenges.id
AND ((challenges.challenger = users.id)
OR
(challenges.opponent = users.id))
AND users.id = '$id'
UNION
SELECT DISTINCT defy_id
FROM challenge_defies, challenges, users
WHERE challenge_defies.challenge_id = challenges.id
AND ((challenges.challenger = users.id)
OR
(challenges.opponent = users.id))
AND users.id = '$moi'
)"
),
'order' => 'rand()',
'recursive' => -1
));
array(
'conditions' => array('Model.field' => $thisValue), //array of conditions
'recursive' => 1, //int
'fields' => array('Model.field1', 'DISTINCT Model.field2'), //array of field names
'order' => array('Model.created', 'Model.field3 DESC'), //string or array defining order
'group' => array('Model.field'), //fields to GROUP BY
'limit' => n, //int
'page' => n, //int
'offset' => n, //int
'callbacks' => true //other possible values are false, 'before', 'after'
)
Les parametres du array sont tous ceux que tu peut utiliser dans ton find
Faut savoir une chose Cakephp utilise un ORM donc chaque élément est mappé en entité relationnel
Donc tu doit créer un Model pour chacune des Entité que tu utilise pour ton cas je dirai "User" & "Challenge" le model "Defy" c'est un peu bizarre surtout au niveau du nom. Je dirai qu'il y a un petit problème au niveau du nom .
Bref tu doit te dire chose suivant
Un "User" peut avoir combien de "Challenge" ?
Un "Challenge" peut avoir combien de "User" ?
quand tu aura répondu à ça dans tes models tu as des variables définie pour ça que tu renseigne par des array
one to one hasOne A user has one profile.
one to many hasMany A user can have multiple recipes.
many to one belongsTo Many recipes belong to a user.
many to many hasAndBelongsToMany Recipes have, and belong to many ingredients.
Donc pour finir tu dois penser PHP et ne pas penser au requête SQL, c'est en gros se que doit faire un ORM.
Il se trouve que comme ça, ma requête fonctionne, donc je vais la garder pour le moment mais j'étudierais ta solution ;)
Merci à toi !