因为我才几天才学习 symfony2 和教义 2,所以我有很多疑问,对于更有经验的人来说可能是愚蠢的。
我有一个带有“标签”字段的博客文章类:
class Article
{
/**
* @ORM\Column(type="array")
*/
protected $tags;
}
现在,我看到 Doctrine 以这种格式将它们作为“longtext”类型存储在数据库中:
a:4:{i:0;s:8:"symfony2";i:1;s:3:"php";i:2;s:8:"paradise";i:3;s:7:"symblog";}
由于我创建了一个标签页面,其中显示了由所选标签标记的所有文章,因此我需要检查博客文章的“标签数组”中是否有此标签。
public function getByTag($tag)
{
$likelyBlogs = $this->createQueryBuilder('b')
->select('b')
->where('LOWER(b.tags) LIKE :tag')
->setParameter('tag', '%:"'.$tag.'"%')
->getQuery()
->getResult();
return $likelyBlogs;
}
然而,这完美地工作,->where('LOWER(b.tags) LIKE :tag')对我来说看起来有点 hacky 所以我想检查是否有任何其他更“自然”的方法来检查值是否存在于数组中?