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 commande
php bin/console doctrine:schema:validate
j'obtient l'erreur suivante

[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 pourtant bien importé
use Gedmo\Mapping\Annotation as Gedmo;
J'ai récupéré le code ici : https://medium.com/@galopintitouan/u...s-9b516335119b

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.