Bonjour, bonsoir,
J'ai plusieurs entités qui possède toutes des traits commun, j'ai donc réalisé un Trait :
Code php : 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
63
64
65
66
67
68
69
70 <?php namespace App\Entity\Traits; use Doctrine\ORM\Mapping as ORM; use Gedmo\Mapping\Annotation as Gedmo; /** * SafetyObject */ trait SafetyEntityTraits { /** TIMESTAMPABLE */ /** * @var \DateTime * * @ORM\Column(type="datetime") * * @Gedmo\Timestampable(on="create") */ protected $createdAt; /** * @var \DateTime * * @ORM\Column(type="datetime") * * @Gedmo\Timestampable(on="update") */ protected $updatedAt; public function getCreatedAt(): \DateTime { return $this->createdAt; } public function getUpdatedAt(): \DateTime { return $this->updatedAt; } public function setUpdatedAt(\DateTime $updatedAt) { $this->updatedAt = $updatedAt; } /** SAFETY DELETE */ /** * @var \DateTime|null * * @ORM\Column(type="datetime", nullable=true) */ private $deletedAt; public function getDeletedAt(): ?\DateTime { return $this->deletedAt; } public function isDeleted(): bool { return $this->deletedAt instanceof \DateTimeInterface; } public function recover() { $this->deletedAt = null; } }
Et je l'importe dans une de mes entités :
Code php : 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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 <?php namespace App\Entity; use App\Repository\FriendRequestRepository; use Doctrine\ORM\Mapping as ORM; use App\Entity\Traits\SafetyEntityTraits; use Gedmo\Mapping\Annotation as Gedmo; use Gedmo\Mapping\Annotation\Timestampable; /** * @ORM\Entity(repositoryClass=FriendRequestRepository::class) */ class FriendRequest { use SafetyEntityTraits; /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="datetime") */ private $date; /** * @ORM\Column(type="boolean") */ private $state; /** * @ORM\ManyToOne(targetEntity=User::class, inversedBy="sentFriendRequests") * @ORM\JoinColumn(nullable=false) */ private $sender; /** * @ORM\ManyToOne(targetEntity=User::class, inversedBy="receivedFriendRequests") * @ORM\JoinColumn(nullable=false) */ private $receiver; public function getId(): ?int { return $this->id; } public function getDate(): ?\DateTimeInterface { return $this->date; } public function setDate(\DateTimeInterface $date): self { $this->date = $date; return $this; } public function getState(): ?bool { return $this->state; } public function setState(bool $state): self { $this->state = $state; return $this; } public function getSender(): ?User { return $this->sender; } public function setSender(?User $sender): self { $this->sender = $sender; return $this; } public function getReceiver(): ?User { return $this->receiver; } public function setReceiver(?User $receiver): self { $this->receiver = $receiver; return $this; } }
Quand je souhaite vérifier si ma base est synchro avec mes entités avec la commandej'obtient l'erreur suivantephp bin/console doctrine:schema:validate
J'ai pourtant bien importé[Semantical Error] The annotation "@Gedmo\Mapping\Annotation\Timestampable" in property App\Entity\FriendRequest::$createdAt was never imported. Did you maybe forget to add a "use" statement for this annotation?J'ai récupéré le code ici : https://medium.com/@galopintitouan/u...s-9b516335119buse Gedmo\Mapping\Annotation as Gedmo;
J'ai cherché sur stackoverflow et les discussions que j'ai pu voir sont trop anciennes ou n'apportent pas de solutions claires... quelqu'un à une idée ?
Merci d'avance !
Skunka.
Partager