CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 10-08-2015 16:56:07

behemoth
Chouquette
Date d'inscription: 10-08-2015
Messages: 2

[RESOLU] Clé étrangère nulle dans une relation belongsTo

Bonjour à tous

Tout d'abord je précise que je débute avec CakePHP.

Je travaille sur un site qui contient une table users et une table shops.

Un magasin peut appartenir à 0 ou 1 utilisateur. Pour matérialiser cette relation dans ma base MySQL, j'ai ajouté la clé étrangère user_id dans la table shops . J'ai rendu cette clé étrangère nullable puisque que dans mon modèle un magasin peut n'appartenir à personne.

J'ai utilisé la commande bake pour créer les modèles, les contrôleurs et les vues correspondant à ces deux tables.

Tout fonctionne parfaitement à un détail près. Lorsque je fais appel à l'action add du contrôleur Shops, je suis obligé de choisir un user_id. Je n'ai pas la possibilité de laisser le champ vide pour les magasins n'appartenant à aucun utilisateur.

Que dois-je modifier pour avoir la possibilité d'enregistrer un magasin qui ne serait associé à aucun utilisateur ?

En espérant avoir été suffisamment clair. Merci d'avance pour votre aide.

Dernière modification par behemoth (11-08-2015 12:04:10)

Hors ligne

 

#2 11-08-2015 11:05:14

frmsoc
Brownie
Date d'inscription: 04-08-2015
Messages: 21

Re: [RESOLU] Clé étrangère nulle dans une relation belongsTo

Salut,

Si c'est du cake2.x, tu peux déjà ajouter une clé empty à ton select (dans la vue donc) :

Code: php

  1. echo $this->Form->input('user_id', array(
  2. 'empty' => __('Aucun utilisateur')
  3. ));

Hors ligne

 

#3 11-08-2015 12:02:36

behemoth
Chouquette
Date d'inscription: 10-08-2015
Messages: 2

Re: [RESOLU] Clé étrangère nulle dans une relation belongsTo

Merci pour ta réponse frmsoc. Elle répond parfaitement à ma question et fonctionne avec CakePHP 3 smile

Cela m'a permis d'approfondir un peu le sujet en jetant un oeil à la documentation. Je remarque qu'on peut également (et c'est l'option que je vais retenir) laisser un champ du select vide avec le code suivant :

Code: php

  1. echo $this->Form->input('user_id', ['empty' => true]);

Dernière modification par behemoth (11-08-2015 12:02:58)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr