我是Symfony的新成员,我正试图从我的内容表中获取所有记录。它可以工作,但它也返回相关实体的所有字段。
$content = $this->contentRepository->findAll();
我得到的结果是:
[{
"id": 2,
"field1": "xx",
"field2": "xx",
"field3": 22,
"field4": {"id":1, "field1":"xx", ...},
....
},...]
在field4上,我想只获得id作为值,而不是整个对象。就像我在做一个SQL。从其他地方阅读我发现关于lazy_loading,但它似乎不工作。
public function getContentData(): array
{
$qb = $this->createQueryBuilder('c');
$qb->select('c.id as id, IDENTITY(c.field4) as field4, c.field1 as field1, c.field2 as field2, c.field3 as field3');
return $qb->getQuery()->getArrayResult();
}
但是如果你想获得一个字段数组,最好是获得实体数组并通过JMSSerializerBundle或Serializer Component序列化它们
进入你的contentRepository
文件,像这样定义一个函数
public function getAllContentIds()
{
$qb = $this->createQueryBuilder();
return $qb->select('id')
->from('YourBundleName:YourTableName')
->getQuery()
->getResult();
}
然后像这样使用这个函数
$contentIds = $this->contentRepository->getAllContentIds();