Как сделать трейт комментариев, чтобы можно было его переиспользовать в других сущностях?
Щас сделал, но он для отдельной сущности создает таблицу с связью ManyToMany,
Можно ли как-то отключить внутренний ключ и хранить в 1 таблицы id сущности и саму сущность ?
trait CommentTrait
{
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Comment", cascade={"persist"})
* @ORM\JoinTable(
* joinColumns={@ORM\JoinColumn(referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(referencedColumnName="id")}
* )
*/
private $comments;
public function __construct()
{
$this->comments = new ArrayCollection();
}
public function getComments()
{
return $this->comments;
}
public function addComment(Comment $comment)
{
$this->comments[] = $comment;
}
}
/**
* @ORM\Entity(repositoryClass="App\Repository\CommentRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Comment
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User")
*/
private $user;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $message;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $updated_at;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $created_at;
public function getId(): ?int
{
return $this->id;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
public function getMessage(): ?string
{
return $this->message;
}
public function setMessage(?string $message): self
{
$this->message = $message;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updated_at;
}
public function setUpdatedAt(?\DateTimeInterface $updated_at): self
{
$this->updated_at = $updated_at;
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->created_at;
}
public function setCreatedAt(?\DateTimeInterface $created_at): self
{
$this->created_at = $created_at;
return $this;
}
/**
* @ORM\PrePersist
*/
public function setCreatedAtValue()
{
$this->created_at = new \DateTime();
}
}