|
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 <[email protected]>
|
34 | 31 | * @author Yonel Ceruto <[email protected]>
|
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