私はsymfony2とdoctrine2をほんの数日しか学んでいないので、経験豊富な人にとってはばかげているかもしれない多くの疑問があります。
'tags'フィールドを持つブログ記事クラスがあります:
class Article
{
/**
* @ORM\Column(type="array")
*/
protected $tags;
}
これで、Doctrineがそれらを次の形式の「longtext」タイプとしてDBに保存していることがわかります。
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')は私にはちょっとハッキーに見えるので、値が配列に存在するかどうかを確認する他の「自然な」方法があるかどうかを確認したいと思います?