IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Doctrine2 PHP Discussion :

Update sur plusieurs lignes au lieu d'une seule


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut Update sur plusieurs lignes au lieu d'une seule
    Bonjour à tous.

    J'essaie d'intégrer un système de paramètres pour chaque utilisateur avec 2 entités (1 UserSettings et 1 User) reliées par un ManyToOne. (user.id = user_settings.user_id)

    A l'heure actuelle, j'ai 3 paramètres (exercice, mes_commandes, commandes_annulées). Cependant je rencontre le soucis suivant quand un user modifie un de ses paramètres, tous les users auront ce même paramètre de modifié avec la nouvelle valeur.

    Voici le code utilisé
    J'ai donc créé les 2 modèles suivants :

    User.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    namespace Application\Model;
     
    use Doctrine\ORM\Mapping as ORM ;
    use Doctrine\Common\Collections\ArrayCollection;
     
    /**
     * @ORM\Entity (repositoryClass="Application\Repository\UserRepository")
     * @ORM\Table (name="USERS")
     */
    class User
    {
    	/**
    	 * @ORM\Id
    	 * @ORM\Column(name="id", type="integer", nullable=false)
    	 * @ORM\GeneratedValue(strategy="IDENTITY")
    	*/
    	protected $id;
    	/**
    	 * @ORM\Column(name="nom", type="string")
    	*/
    	protected $nom;
    	/**
    	 * @ORM\Column(name="prenom", type="string")
    	*/
    	protected $prenom;
     
    ....
    UserSettings.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    namespace Application\Model;
     
    use Doctrine\ORM\Mapping as ORM ;
    use Doctrine\Common\Collections\ArrayCollection;
     
    /**
     * @ORM\Entity (repositoryClass="Application\Repository\UserSettingsRepository")
     * @ORM\Table (name="USER_SETTINGS")
     */
    class UserSettings
    {
    	/**
    	 * @ORM\ManyToOne(targetEntity="User")
    	 * @ORM\JoinColumn(nullable=false)
    	 */
    	protected $user;
    	/**
    	 * @ORM\Id
    	 * @ORM\Column(name="name", type="string")
    	*/
    	protected $name;
    	/**
    	 * @ORM\Column(name="value", type="string")
    	*/
    	protected $value;
     
    	public function __construct() 
    	{
    		$this->name = null;
    		$this->value = null;
    	}
     
    	public function getName() {
    		return $this->name;
    	}
     
    	public function setName($name) {
    		$this->name = $name;
    		return $this;
    	}
     
    	public function getValue() {
    		return $this->value;
    	}
     
    	public function setValue($value) {
    		$this->value = $value;
    		return $this;
    	}
     
    	public function getUser()
    	{
    		return $this->user;
    	}
     
    	public function setUser($user)
    	{
    		$this->user = $user;
    		return $this;
    	}	
    }
    Pour le chargement des données aucun problème, je récupère bien les valeurs exactes pour chaque utilisateur. Mais dès que je veux mettre à jour une valeur, plusieurs champs de la table sont mise à jour alors que cela ne les concernait pas

    Depuis mon controlleur, je fais appelle directement à une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public function updateSettings($settings)
        {
            foreach($settings as $s)
    	        $this->em->persist($s);
     
    	$this->em->flush();
        }
    Quelqu'un aurait-il une idée ? Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Par défaut
    Problème résolu. J'avais oublié d'indiqué @Id dans la classe UserSettings.

    UserSettings.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    /**
    	 * @ORM\Id()
    	 * @ORM\ManyToOne(targetEntity="User")
    	 * @ORM\JoinColumn(nullable=false)
    	 */
    	protected $user;
    	/**
    	 * @ORM\Id
    	 * @ORM\Column(name="name", type="string")
    	*/
    	protected $name;
    	/**
    	 * @ORM\Column(name="value", type="string")
    	*/
    	protected $value;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 08/09/2015, 23h15
  2. update sur plusieurs lignes avec table temporaire
    Par -=mateo=- dans le forum SQL
    Réponses: 3
    Dernier message: 23/12/2010, 14h40
  3. [SQL] update sur plusieurs lignes
    Par Hurin dans le forum Langage SQL
    Réponses: 8
    Dernier message: 04/08/2008, 16h37
  4. Afficher sur plusieur ligne du texte dans une balise <td>
    Par G_Kill dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 02/12/2006, 08h50
  5. Update sur plusieurs lignes
    Par JOUCHET dans le forum Oracle
    Réponses: 1
    Dernier message: 20/05/2006, 18h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo