私のプロジェクトには、次のエンティティ構造があります。
class MyEntity
{
[... some more fields...]
/**
* @Type("array<string, string>")
* @ORM\ManyToMany(targetEntity="Me\MyBundle\Entity\Example")
* @ORM\JoinTable(name="example_myentity",
* joinColumns={@ORM\JoinColumn(name="plan_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="example", referencedColumnName="label")}
* )
*/
private $example;
}
class Example
{
/**
* @ORM\Id
* @ORM\Column(name="label", type="string", length=50, unique=true, nullable=false)
*/
private $label;
}
Doctrine の findby() 関数を使用して "$example" を取得しようとすると、次の通知が表示されました。
未定義のインデックス: joinColumns
私はそれをデバッグしようとしましたが、問題は関数の教義ファイル BasicEntityPersister.php にあるようです
_getSelectEntitiesSQL($criteria, $assoc = null, $lockMode = 0, $limit = null, $offset = null, array $orderBy = null),
スタック トレースで、2 番目のパラメーター "$assoc" が常に nullであることを確認しました。これが、Doctrine が JOIN ステートメントを作成しない理由だと思います。
何か案が?
ありがとう