Doctrine - Criteria - expressions - 包含(多对多)
Doctrine - Criteria - expressions - contains (many to many)
我正在尝试用 Doctrine 解决一个问题。我正在使用标准来查找结果 - 帖子(主要使用表达式 eq,有效),但现在我想按标签查找帖子 - 通常是 ManyToMany(很容易使用标准)。
问题是我仍然收到此错误:"Notice: Undefined index: joinColumns in ..."
这是我的代码:
....
$criteria = Criteria::create();
foreach ($this->tags as $tag)
$criteria->Where( Criteria::expr()->contains('tags', $tag ));
...
//$this->tags is an array collection of selected tags.
发布实体 - 标签注释:
/**
* @var Collection
* @ORM\ManyToMany(targetEntity="Tag", inversedBy="posts")
* @ORM\JoinTable(name="blog_post_tag",
* joinColumns={@ORM\JoinColumn(name="post_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")}
* )
*
*/
protected $tags;
那里可以使用标准吗?
谢谢。
多对多关系的条件不久前在学说中不受支持,但我看到了这个拉取请求:
https://github.com/doctrine/doctrine2/pull/885/commits
所以它可能在较新版本的学说中得到支持。
我正在尝试用 Doctrine 解决一个问题。我正在使用标准来查找结果 - 帖子(主要使用表达式 eq,有效),但现在我想按标签查找帖子 - 通常是 ManyToMany(很容易使用标准)。
问题是我仍然收到此错误:"Notice: Undefined index: joinColumns in ..."
这是我的代码:
....
$criteria = Criteria::create();
foreach ($this->tags as $tag)
$criteria->Where( Criteria::expr()->contains('tags', $tag ));
...
//$this->tags is an array collection of selected tags.
发布实体 - 标签注释:
/**
* @var Collection
* @ORM\ManyToMany(targetEntity="Tag", inversedBy="posts")
* @ORM\JoinTable(name="blog_post_tag",
* joinColumns={@ORM\JoinColumn(name="post_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")}
* )
*
*/
protected $tags;
那里可以使用标准吗?
谢谢。
多对多关系的条件不久前在学说中不受支持,但我看到了这个拉取请求:
https://github.com/doctrine/doctrine2/pull/885/commits
所以它可能在较新版本的学说中得到支持。