【发布时间】:2018-03-12 10:15:27
【问题描述】:
我的项目有问题,array 输入教义。
我的实体获得了保存用户 ID 列表的字段用户列表。在我的数据库中,字段类型是 TEXT :
/**
* @Column(type="array", nullable=false)
*/
private $userslist;
我这样创建我的内容:
$r->createNewLine(50, 'Name', 'Content', array(1, 5, 8))
我的字段用户列表在我的表格中的结果看起来像这样(我认为它是键 -> 值):
a:3:{i:0;i:1;i:1;i:5;i:2;i:8;}
我使用 QueryBuilder 来获取结果,这是我的请求:
$qb = $this->createQueryBuilder('r')
->andWhere('r.userslist IN (:userid)')
->setParameters(array('userid' => array(1)));
return $qb->getQuery()->getArrayResult();
结果我总是得到一个空数组。 我的表中有几行,用户列表字段中的用户 ID 为 1。
a:3:{i:0;i:1;i:1;i:5;i:2;i:8;}
a:3:{i:0;i:1;i:1;i:5;i:2;i:8;}
a:3:{i:0;i:9;i:1;i:4;i:2;i:2;}
a:3:{i:0;i:1;i:1;i:5;i:2;i:8;}
a:3:{i:0;i:9;i:1;i:4;i:2;i:2;}
...
我也尝试过使用表达式:
$qb->add('where', $qb->expr()->in('r.userslist', array(':userid')));
结果也是空的。
但是当我使用LIKE 时,它可以工作但不安全,因为我在表中的键和值之间感到困惑:
$qb = $this->createQueryBuilder('r')
->andWhere("r.userslist LIKE :userid")
->setParameters(array('userid' => '%i:1;%'));
如何在用户列表字段中获取用户 ID 1 所在的行?
谢谢
【问题讨论】:
标签: php sql arrays doctrine-orm doctrine