gpt4 book ai didi

symfony - 未定义索引 : joinColumns doctrine + symfony2

转载 作者:行者123 更新时间:2023-12-02 13:56:51 25 4
gpt4 key购买 nike

我的项目中有以下实体结构。

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”时,我收到以下通知:

Undefined index: joinColumns

我尝试调试一下,问题似乎出在 Doctrine 文件BasicEntityPersister.php中的函数

 _getSelectEntitiesSQL($criteria, $assoc = null, $lockMode = 0, $limit = null, $offset = null, array $orderBy = null),

我在堆栈跟踪中观察到第二个参数“$assoc”始终为 null,我认为这就是 Doctrine 不执行 JOIN 语句的原因。

有什么想法吗?

谢谢

最佳答案

我相信这是一个错误,可能是this one .

我也有同样的问题,目前唯一的解决方案似乎是等待 BasicEntityPersister 的更新或编写非常简单的查询。

首先向您的类添加存储库

/**
* MyClass
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Acme\DemoBundle\Entity\MyClassRepository")
*/
class MyClass
...

然后在你的存储库类中:

class MyClassRepository extends EntityRepository
{
public function findByExample( Example $example )
{
return $this->getEntityManager()
->createQueryBuilder()
->select('m')
->from('AcmeDemoBundle:MyClass', 'm')
->innerJoin('m.examples', 'e')
->where('e.id = :exampleid' )
->setParameter('exampleid', $example->getId() )
->getQuery()
->getResult();
}
}

最后你可以通过以下方式获取与示例相关的所有 MyClass 实例:

$this->getDoctrine()->getManager()->getRepository('AcmeDemoBundle:MyClass')->findByExample( $example );

关于symfony - 未定义索引 : joinColumns doctrine + symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18331286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com