首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用symfony3获取多对多关系中的关联数据时出现语义错误

使用symfony3获取多对多关系中的关联数据时出现语义错误
EN

Stack Overflow用户
提问于 2017-01-29 21:41:49
回答 2查看 53关注 0票数 1

我有一个简单的应用程序在symfony3中制作。我试图为我的实体获取适当的标签,但我遇到了一个问题。

我的标签实体中有一部分:

代码语言:javascript
运行
复制
/**
 * Tag
 *
 * @ORM\Table(name="tag")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\TagRepository")
 */
class Tag
{
    .
    .
    .

    /**
     * @ORM\ManyToMany(targetEntity="Note", mappedBy="tags")
     */
    private $notes;

...and笔记实体的一部分:

代码语言:javascript
运行
复制
/**
 * 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;

在我的仓库类中,我调用:

代码语言:javascript
运行
复制
if(!empty($data['tags'])) {
    $query->andWhere('n.tags = :tag')->setParameter('tag', 6);
}

...then结果为:

代码语言:javascript
运行
复制
[Semantical Error] line 0, col 46 near 'tags = :tag ORDER': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.

我是Symfony 2和Doctrine的新手,所以我需要你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-30 20:50:43

我找到了一个解决方案,我必须使用MEMBER OF子句:

代码语言:javascript
运行
复制
    if(!empty($data['tags'])) {
        $query->andWhere(':tag MEMBER OF n.tags')->setParameter('tag', $data['tags']);
    }
票数 1
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41921559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档