6
我有:兩個實體具有單向M:M關聯。主義加入多對多無關聯
class ShareInfo
{
// ...
/**
* @ORM\ManyToMany(targetEntity="Item")
* @ORM\JoinTable(name="share_info_items",
* joinColumns={@ORM\JoinColumn(name="share_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="item_id", referencedColumnName="id")})
*
* @var Item[]
*/
private $items;
}
class Item
{
// ...
// This entity has no association with ShareInfo,
// because M:M is undirectional and defined in ShareInfo entity
}
我想要什麼:項目和ShareInfo米之間存在記錄: 從項目表(項目單位),其中至少一個M選擇數據。
我的建議不工作(我有一個語義錯誤):
$queryBuilder
->select('i')
->from(Item::class, 'i')
->innerJoin(ShareInfo::class, 'shareInfo', 'WITH', 'shareInfo.items = i');
在純SQL我會做這樣的事情:
SELECT i.*
FROM items i
INNER JOIN share_info_items shareInfo
ON shareInfo.item_id = i.id
燦」相信這裏沒有DQL類比。我能想象的唯一解決方案是將單向M:M關聯分割爲雙向
P.S.這個問題沒有重複,我檢查得很好。
你已經找到了解決這個問題嗎? – semsem
@semsem我不記得說實話。但是現在我會用一箇中間表來使用MtM關係。請參閱https://stackoverflow.com/questions/15616157/doctrine-2-and-many-to-many-link-table-with-an-extra-field/15630665#15630665 看起來像沒有解決方案,定向關聯。 – Hast