私はいくつかの共通のインタフェースを実装しているdoctrineエンティティを持っていますが、(理想的には)doctrineのリポジトリを作成して、単純なSQLで)。エンティティは、共通の基底クラスから継承しません。共通インタフェースを実装するエンティティのDoctrineリポジトリ
具体インタフェースは、オブジェクトがタグとして使用することができます:
interface My\TaggableInterface
{
// get object UUID
public function getObjectIdentity(): string
// get the tag text
public function getTagString(): string
}
class My\Entity implements My\TaggableInterface
class My\Other\Entity implements My\TaggableInterface
私は労働組合を管理されたカスタムリポジトリを作成するには期待していたので、私は書くことができます:
$entityManager()->getRepository('My\\TaggableInterface')
->findBy(
//criteria
)`
しかし、インターフェイスまたはsupport for union in the doctrine query builderから一時テーブルを作成する方法はありません。可能であればネイティブ(私)のSQLの使用を避けたいですが、Doctrineを使用してこれを達成する方法がわかりません。
多くのありがとうございます。
Doctrineのエンティティ間でリポジトリを共有できません。エンティティごとにカスタムリポジトリを作成し、特性やベースリポジトリを介してタグ可能なものを実装することができます。 – Cerad