|
11 | 11 |
|
12 | 12 | namespace App\Entity; |
13 | 13 |
|
| 14 | +use App\Repository\PostRepository; |
14 | 15 | use Doctrine\Common\Collections\ArrayCollection; |
15 | 16 | use Doctrine\Common\Collections\Collection; |
16 | 17 | use Doctrine\ORM\Mapping as ORM; |
17 | 18 | use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; |
18 | 19 | use Symfony\Component\Validator\Constraints as Assert; |
19 | 20 |
|
20 | 21 | /** |
21 | | - * @ORM\Entity(repositoryClass="App\Repository\PostRepository") |
22 | | - * @ORM\Table(name="symfony_demo_post") |
23 | | - * @UniqueEntity(fields={"slug"}, errorPath="title", message="post.slug_unique") |
24 | | - * |
25 | 22 | * Defines the properties of the Post entity to represent the blog posts. |
26 | 23 | * |
27 | 24 | * See https://symfony.com/doc/current/doctrine.html#creating-an-entity-class |
|
33 | 30 | * @author Javier Eguiluz <javier.eguiluz@gmail.com> |
34 | 31 | * @author Yonel Ceruto <yonelceruto@gmail.com> |
35 | 32 | */ |
| 33 | +#[ORM\Entity(repositoryClass: PostRepository::class)] |
| 34 | +#[ORM\Table(name: 'symfony_demo_post')] |
| 35 | +#[UniqueEntity(fields: ['slug'], errorPath: 'title', message: 'post.slug_unique')] |
36 | 36 | class Post |
37 | 37 | { |
38 | | - /** |
39 | | - * @ORM\Id |
40 | | - * @ORM\GeneratedValue |
41 | | - * @ORM\Column(type="integer") |
42 | | - */ |
| 38 | + #[ORM\Id] |
| 39 | + #[ORM\GeneratedValue] |
| 40 | + #[ORM\Column(type: 'integer')] |
43 | 41 | private ?int $id = null; |
44 | 42 |
|
45 | | - /** |
46 | | - * @ORM\Column(type="string") |
47 | | - */ |
| 43 | + #[ORM\Column(type: 'string')] |
48 | 44 | #[Assert\NotBlank] |
49 | 45 | private ?string $title = null; |
50 | 46 |
|
51 | | - /** |
52 | | - * @ORM\Column(type="string") |
53 | | - */ |
| 47 | + #[ORM\Column(type: 'string')] |
54 | 48 | private ?string $slug = null; |
55 | 49 |
|
56 | | - /** |
57 | | - * @ORM\Column(type="string") |
58 | | - */ |
| 50 | + #[ORM\Column(type: 'string')] |
59 | 51 | #[ |
60 | 52 | Assert\NotBlank(message: 'post.blank_summary'), |
61 | 53 | Assert\Length(max: 255) |
62 | 54 | ] |
63 | 55 | private ?string $summary = null; |
64 | 56 |
|
65 | | - /** |
66 | | - * @var string |
67 | | - * |
68 | | - * @ORM\Column(type="text") |
69 | | - */ |
| 57 | + #[ORM\Column(type: 'text')] |
70 | 58 | #[ |
71 | 59 | Assert\NotBlank(message: 'post.blank_content'), |
72 | 60 | Assert\Length(min: 10, minMessage: 'post.too_short_content') |
73 | 61 | ] |
74 | 62 | private ?string $content = null; |
75 | 63 |
|
76 | | - /** |
77 | | - * @ORM\Column(type="datetime") |
78 | | - */ |
| 64 | + #[ORM\Column(type: 'datetime')] |
79 | 65 | private \DateTime $publishedAt; |
80 | 66 |
|
81 | | - /** |
82 | | - * @ORM\ManyToOne(targetEntity="App\Entity\User") |
83 | | - * @ORM\JoinColumn(nullable=false) |
84 | | - */ |
| 67 | + #[ORM\ManyToOne(targetEntity: User::class)] |
| 68 | + #[ORM\JoinColumn(nullable: false)] |
85 | 69 | private ?User $author = null; |
86 | 70 |
|
87 | 71 | /** |
88 | 72 | * @var Comment[]|Collection |
89 | | - * |
90 | | - * @ORM\OneToMany( |
91 | | - * targetEntity="Comment", |
92 | | - * mappedBy="post", |
93 | | - * orphanRemoval=true, |
94 | | - * cascade={"persist"} |
95 | | - * ) |
96 | | - * @ORM\OrderBy({"publishedAt": "DESC"}) |
97 | 73 | */ |
| 74 | + #[ORM\OneToMany(targetEntity: Comment::class, mappedBy: 'post', orphanRemoval: true, cascade: ['persist'])] |
| 75 | + #[ORM\OrderBy(['publishedAt' => 'DESC'])] |
98 | 76 | private Collection $comments; |
99 | 77 |
|
100 | 78 | /** |
101 | 79 | * @var Tag[]|Collection |
102 | | - * |
103 | | - * @ORM\ManyToMany(targetEntity="App\Entity\Tag", cascade={"persist"}) |
104 | | - * @ORM\JoinTable(name="symfony_demo_post_tag") |
105 | | - * @ORM\OrderBy({"name": "ASC"}) |
106 | 80 | */ |
| 81 | + #[ORM\ManyToMany(targetEntity: Tag::class, cascade: ['persist'])] |
| 82 | + #[ORM\JoinTable(name: 'symfony_demo_post_tag')] |
| 83 | + #[ORM\OrderBy(['name' => 'ASC'])] |
107 | 84 | #[Assert\Count(max: 4, maxMessage: 'post.too_many_tags')] |
108 | 85 | private Collection $tags; |
109 | 86 |
|
|
0 commit comments