08-17-2008, 11:25 AM
Bonjour à tous,
Je suis en ce moment en train d'expérimenter CakePHP, et une question pourtant triviale dans un autre contexte, me pose problème.
J'ai un jeu qui s'organisent en plusieurs parties de 10 joueurs (groupés par langue). On a donc une relation 1, n. Une partie a plusieurs joueurs. Comment le modélise-t-on en base de données ?
Pour ma part, j'ai choisis de faire :
Quand un joueur rejoint une partie, le système compte d'abord s'il existe une partie récente qui partage la langue de l'utilisateur et où moins de 10 joueurs sont inscrits.
Sans Framework, j'utiliserai cette simple requête (%s représente la locale de l'utlisateur), qui me donne le nombre de joueurs qu'il y a dans la partie de même langue la plus récente.
Tout ça me conviendrait très bien si je n'avais pas de Framework. Mais j'aimerai quand même pouvoir générer cette requête automatiquement. Mais je n'arrive pas à le faire… :(
Sephi-Chan
Je suis en ce moment en train d'expérimenter CakePHP, et une question pourtant triviale dans un autre contexte, me pose problème.
J'ai un jeu qui s'organisent en plusieurs parties de 10 joueurs (groupés par langue). On a donc une relation 1, n. Une partie a plusieurs joueurs. Comment le modélise-t-on en base de données ?
Pour ma part, j'ai choisis de faire :
Citation :Joueurs
joueur_id (PK)
nom
langue
partie_id (FK)
Citation :Partie
partie_id (PK)
langue
Quand un joueur rejoint une partie, le système compte d'abord s'il existe une partie récente qui partage la langue de l'utilisateur et où moins de 10 joueurs sont inscrits.
Sans Framework, j'utiliserai cette simple requête (%s représente la locale de l'utlisateur), qui me donne le nombre de joueurs qu'il y a dans la partie de même langue la plus récente.
Code :
SELECT count(*) AS count
FROM games G
JOIN users U
ON U.game_id = G.id
WHERE G.id = (
SELECT max(id)
FROM games
WHERE lang = '%s'
);Tout ça me conviendrait très bien si je n'avais pas de Framework. Mais j'aimerai quand même pouvoir générer cette requête automatiquement. Mais je n'arrive pas à le faire… :(
Sephi-Chan