【发布时间】:2013-08-22 17:31:56
【问题描述】:
在一个实体中,我有一个如下所示的字段:
/**
* @ORM\Column(type="array")
*/
protected $category;
和查询构建器
$qb = $this->createQueryBuilder('s');
$qb->select($fields)
->where( 's.category IN (:category)') //////////// <----
->orderBy('s.name', 'ASC')
->setParameter('category', $category_id);
所以在数据库字段类别中是Doctrine2 Array。我想使用 QueryBuilder 从数据库中选择记录。我的问题是,我该如何使用 WHERE 子句来检查该数组中的字段?
【问题讨论】:
-
不。您不能查询数组值。如果您检查您的数据库,您将看到它实际上存储为一个字符串。数组类型是持久化数组的原则扩展。数据库本身对它们一无所知。如果你想做这种查询,那么你需要用它自己的表创建一个名为 Category 的实体,并将它与你的主实体相关联。
标签: symfony doctrine-orm query-builder dbal