我有一个简单的应用程序在symfony3中制作。我试图为我的实体获取适当的标签,但我遇到了一个问题。
我的标签实体中有一部分:
/**
* Tag
*
* @ORM\Table(name="tag")
* @ORM\Entity(repositoryClass="AppBundle\Repository\TagRepository")
*/
class Tag
{
.
.
.
/**
* @ORM\ManyToMany(targetEntity="Note", mappedBy="tags")
*/
private $notes;...and笔记实体的一部分:
/**
* Note
*
* @ORM\Table(name="note")
* @ORM\Entity(repositoryClass="AppBundle\Repository\NoteRepository")
*/
class Note
{
.
.
.
/**
* @ORM\ManyToMany(targetEntity="Tag", inversedBy="notes", cascade={"persist"})
* @ORM\JoinTable(name="notes_tags")
*/
private $tags;在我的仓库类中,我调用:
if(!empty($data['tags'])) {
$query->andWhere('n.tags = :tag')->setParameter('tag', 6);
}...then结果为:
[Semantical Error] line 0, col 46 near 'tags = :tag ORDER': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.我是Symfony 2和Doctrine的新手,所以我需要你的帮助。
发布于 2017-01-30 20:50:43
我找到了一个解决方案,我必须使用MEMBER OF子句:
if(!empty($data['tags'])) {
$query->andWhere(':tag MEMBER OF n.tags')->setParameter('tag', $data['tags']);
}发布于 2017-01-30 00:21:39
首先,你需要把课堂笔记inversedBy改成“笔记”。还要确保您的代码看起来像http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#many-to-many-bidirectional
https://stackoverflow.com/questions/41921559
复制相似问题