src/Entity/User.php line 16
<?phpnamespace App\Entity;use App\Repository\UserRepository;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\DBAL\Types\Types;use Doctrine\ORM\Mapping as ORM;use Gedmo\Timestampable\Traits\TimestampableEntity;use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;use Symfony\Component\Security\Core\User\UserInterface;#[ORM\Entity(UserRepository::class)]#[ORM\Table('`user`')]class User implements UserInterface, PasswordAuthenticatedUserInterface{use TimestampableEntity;#[ORM\Id]#[ORM\GeneratedValue]#[ORM\Column]private ?int $id;#[ORM\Column(length: 180, unique: true)]private ?string $email;#[ORM\Column(type: Types::JSON)]private array $roles = [];/*** The hashed password*/#[ORM\Column]private ?string $password;/*** The plain non-persisted password*/private ?string $plainPassword;#[ORM\Column]private bool $enabled = true;#[ORM\Column]private ?string $firstName;#[ORM\Column]private ?string $lastName;#[ORM\Column(nullable: true)]private ?string $avatar;#[ORM\OneToMany('askedBy', Question::class)]private Collection $questions;#[ORM\OneToMany('answeredBy', Answer::class)]private Collection $answers;#[ORM\OneToMany(mappedBy: 'user', targetEntity: Comment::class, orphanRemoval: true)]private Collection $comments;public function __construct(){$this->questions = new ArrayCollection();$this->answers = new ArrayCollection();$this->comments = new ArrayCollection();}public function __toString(): string{return $this->getFullName();}public function getId(): ?int{return $this->id;}public function getEmail(): ?string{return $this->email;}public function setEmail(string $email): self{$this->email = $email;return $this;}/*** A visual identifier that represents this user.** @see UserInterface*/public function getUserIdentifier(): string{return (string) $this->email;}/*** @deprecated since Symfony 5.3, use getUserIdentifier instead*/public function getUsername(): string{return (string) $this->email;}/*** @see UserInterface*/public function getRoles(): array{$roles = $this->roles;// guarantee every user at least has ROLE_USER$roles[] = 'ROLE_USER';return array_unique($roles);}public function setRoles(array $roles): self{$this->roles = $roles;return $this;}/*** @see PasswordAuthenticatedUserInterface*/public function getPassword(): string{return $this->password;}public function setPassword(string $password): self{$this->password = $password;return $this;}public function getPlainPassword(): string{return $this->plainPassword;}public function setPlainPassword(string $plainPassword): void{$this->plainPassword = $plainPassword;}/*** Returning a salt is only needed, if you are not using a modern* hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.** @see UserInterface*/public function getSalt(): ?string{return null;}/*** @see UserInterface*/public function eraseCredentials(){// If you store any temporary, sensitive data on the user, clear it here$this->plainPassword = null;}public function isEnabled(): bool{return $this->enabled;}public function setEnabled(bool $enabled): void{$this->enabled = $enabled;}public function getFirstName(): ?string{return $this->firstName;}public function setFirstName(string $firstName): void{$this->firstName = $firstName;}public function getLastName(): ?string{return $this->lastName;}public function setLastName(string $lastName): void{$this->lastName = $lastName;}public function getFullName(): ?string{return $this->firstName.' '.$this->lastName;}public function getAvatar(): ?string{return $this->avatar;}public function getAvatarUrl(): ?string{if (!$this->avatar) {return null;}if (strpos($this->avatar, '/') !== false) {return $this->avatar;}return sprintf('/uploads/avatars/%s', $this->avatar);}public function setAvatar(?string $avatar): void{$this->avatar = $avatar;}/*** @return Collection|Question[]*/public function getQuestions(): Collection{return $this->questions;}public function addQuestion(Question $question): self{if (!$this->questions->contains($question)) {$this->questions[] = $question;$question->setAskedBy($this);}return $this;}public function removeQuestion(Question $question): self{if ($this->questions->removeElement($question)) {// set the owning side to null (unless already changed)if ($question->getAskedBy() === $this) {$question->setAskedBy(null);}}return $this;}/*** @return Collection|Answer[]*/public function getAnswers(): Collection{return $this->answers;}public function addAnswer(Answer $answer): self{if (!$this->answers->contains($answer)) {$this->answers[] = $answer;$answer->setAnsweredBy($this);}return $this;}public function removeAnswer(Answer $answer): self{if ($this->answers->removeElement($answer)) {// set the owning side to null (unless already changed)if ($answer->getAnsweredBy() === $this) {$answer->setAnsweredBy(null);}}return $this;}/*** @return Collection<int, Comment>*/public function getComments(): Collection{return $this->comments;}public function addComment(Comment $comment): static{if (!$this->comments->contains($comment)) {$this->comments->add($comment);$comment->setUser($this);}return $this;}public function removeComment(Comment $comment): static{if ($this->comments->removeElement($comment)) {// set the owning side to null (unless already changed)if ($comment->getUser() === $this) {$comment->setUser(null);}}return $this;}}