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
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 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; ....
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
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; } }
Depuis mon controlleur, je fais appelle directement à une fonction
Quelqu'un aurait-il une idée ? Merci d'avance
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(); }
Partager