Je suis comment dire... nouveau dans le monde de cake php et je fais
certainement les erreurs de débutants...
Un produit est constitué de plusieurs fournitures qui sont quntifiées
dans la relation.
Exemple:
Une roue de vélo contient 24 rayons, une jante, une chambre à air, un
pneu.
produits
------------
ID Designation
2 Roue de vélo
fournitures
----------------
ID Designation
1 Rayon
2 Jante
3 Chambre à air
4 Pneu
fournitures_produits
-----------------------------
produit_id fourniture_id quantite
1 1 24
1 2 1
1 3 1
1 4 1
Et bien comment c'est possible avec bake.php ?
Merci d'avance pour vos remarques et suggestions.
CREATE TABLE `fournitures` (
`id` int(10) unsigned NOT NULL auto_increment,
`libelle` varchar(45) NOT NULL,
`prix` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `fournitures_produits` (
`id` int(10) unsigned NOT NULL auto_increment,
`fourniture_id` int(10) unsigned NOT NULL,
`produit_id` int(10) unsigned NOT NULL,
`quantite` float NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `produits` (
`id` int(10) unsigned NOT NULL auto_increment,
`designation` varchar(45) NOT NULL,
`prix` decimal(18,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Comment c'est possible avec cake.php ?
Je comprends pas tout à fait le sense de ta question, cependant ton
code est bien, t'as écris fournitures_produits pour la table de
jointure et non pas produits_fournitures, l'ordre est important à
moins que tu spécifis la table dans la définition de l'association
dans les models..
je vois que tu as quantité dans la table de jointure et la
effectivement y a un petit soucis, cake ne va pas se rendre compte de
ça, et ne vas pas l'inclure dans les requetes etc, il regarde que les
clès étrangères pour faire la jointure et puis c'est tout.
Mais y a une solution à ça. Dans la version 1.2 y a un paramêtre
additionnel dans hasAndBelongsToMany, 'with'. ce paramêtre te permets
de faire la jointure à travers un modèle que t'as déjà son modèl. si
tu as la version 1.1.x alors tu n'as que crée le modèle de la table de
jointure et faire des hasMany vers le modèle de jointure, et des
belongsTo de ce modèle vers les autres. comme ça quand tu fais findAll
dans fournitures tu auras fournitures_produits et produits, n'oubli
pas d'ajouter recursive = 2 dans les modèles où avant que tu fais tes
findAll.
Cordialement.
Tout d'abord merci pour la clarté de la réponse.
Le sens de ma question :
J'aurais souhaité utiliser bake pour générer les interfaces html.
Je vais donc de ce pas acquérir la version 1.2 de cake et suivre
l'exemple du lien
Je reviendrai avec mes impressions et ... solutions!
JiBe.
On 3 fév, 16:14, "CraZyLeGs" <crazyl...@gmail.com> wrote:
> Bonjour,
>
> Comment c'est possible avec cake.php ?
>
> Je comprends pas tout à fait le sense de ta question, cependant ton
> code est bien, t'as écris fournitures_produits pour la table de
> jointure et non pas produits_fournitures, l'ordre est important à
> moins que tu spécifis la table dans la définition de l'association
> dans les models..
> je vois que tu as quantité dans la table de jointure et la
> effectivement y a un petit soucis, cake ne va pas se rendre compte de
> ça, et ne vas pas l'inclure dans les requetes etc, il regarde que les
> clès étrangères pour faire la jointure et puis c'est tout.
>
> Mais y a une solution à ça. Dans la version 1.2 y a un paramêtre
> additionnel dans hasAndBelongsToMany, 'with'. ce paramêtre te permets
> de faire la jointure à travers un modèle que t'as déjà son modèl. si
> tu as la version 1.1.x alors tu n'as que crée le modèle de la table de
> jointure et faire des hasMany vers le modèle de jointure, et des
> belongsTo de ce modèle vers les autres. comme ça quand tu fais findAll
> dans fournitures tu auras fournitures_produits et produits, n'oubli
> pas d'ajouter recursive = 2 dans les modèles où avant que tu fais tes
> findAll.
>
> http://www.thinkingphp.org/2006/10/26/modeling-relationships-in-cakep...