Я хочу создать Entity, который будет реализовывать следующий интерфейс.
<?php
namespace App\Entity\Interfaces;
#...
interface FooInterface
{
/**
* @param ArrayCollection|FooInterface[] $foo
*/
public function setFoo($foo);
/**
* @return ArrayCollection|FooInterface[]
*/
public function getFoo();
}
Для простоты я хочу использовать trait для наследования свойств и методов от него. Итак, наконец, мои сущности могут выглядеть примерно так:
<?php
namespace App\Entity\Entity;
#...
class Bar implements FooInterface
{
use FooTrait;
}
и
<?php
namespace App\Entity\Entity;
#...
class Baz implements FooInterface
{
use FooTrait;
}
Но я не знаю, как разрешить targetEntity
и name
динамически
в аннотации @ORM
.
<?php
namespace App\Entity\Traits;
#...
trait FooTrait
{
/**
* Many Foo has Many Foo.
*
* @ORM\ManyToMany(targetEntity="...")
* @ORM\JoinTable(
* name="..."
* joinColumns={@ORM\JoinColumn(name="foo_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="foo_of_id", referencedColumnName="id")}
* )
* @ORM\OrderBy({"id" = "ASC"})
*
* @var FooInterface[]|ArrayCollection
*/
protected $foo;
#...
}
Подход, который я выбрал, хороший? Если да, то как мне решить мою проблему?