yml マッピングを持つエンティティ "BlogPosts" があります。
type: entity
table: blog_posts
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
body:
type: text
created_at:
type: datetime
manyToMany:
replies:
targetEntity: BlogPosts
inversedBy: replyTo
orderBy: {"id": "DESC"}
orphanRemoval: true
joinTable:
name: blog_post_replies
joinColumns:
reply_to_id:
referencedColumnName: id
inverseJoinColumns:
reply_id:
referencedColumnName: id
replyTo:
targetEntity: BlogPosts
mappedBy: replies
manyToOne:
user:
targetEntity: User
inversedBy: posts
joinColumns:
user_id:
referencedColumnName: id
nullable: false
問題は、JOIN を使用してデータをフェッチしようとすると、結果が空になることです。
$query = $em->createQuery("SELECT p, rl FROM <Bundle>:BlogPosts p JOIN p.replies rl WHERE p.user = 1");
$posts = $query->getResult(); // Returns empty array
ただし、結合なしで完全に機能します。
$query = $em->createQuery("SELECT p FROM <Bundle>:BlogPosts p WHERE p.user = 1");
$posts = $query->getResult(); // Works as intended
私は何が欠けていますか?私は本当に絶望的です:(
編集:返信のある投稿のみを返すことがわかりました。すべての投稿を選択するにはどうすればよいですか?返信がある場合は返信もしますか?