从 symfony 4,我创建了一个示例存储库类。在这个类中,我创建了一个获取所有电子邮件用户列表的方法。我想得到一个这样的数组结构:
array(
"email1",
"email2",
"email3",
...
)
但是使用“getResult”我得到了一个多维数组。然后,我用 getArrayResult 和 getScalarResult 进行了测试,每次都得到完全相同的数组结构结果!
下面,我的服务类:
<?php
class UserRepository extends ServiceEntityRepository
{
public function __construct(RegistryInterface $registry)
{
parent::__construct($registry, User::class);
}
public function getAllEmail(){
$result = $this->createQueryBuilder('u')
->select(array('u.email'))
->setMaxResults(5)
->getQuery();
return array( // getResult && getArrayResult && getScalarResult return exactly same array structure
"getResult" => $result->getResult(),
"getArrayResult" => $result->getArrayResult(),
"getScalarResult" => $result->getScalarResult(),
);
}
}
当我转储 "getAllEmail()" 的输出时的结果:
为什么 getResult/getArrayResult/getScalarResult 返回完全相同的数组结构?我在某处做错了吗?
编辑:我修改了我的存储库类:
public function getAllEmail(){
$result = $this->createQueryBuilder('u','u.email')
->setMaxResults(5)
->getQuery();
return array(
"getResult" => $result->getResult(),
"getArrayResult" => $result->getArrayResult(),
"getScalarResult" => $result->getScalarResult(),
);
}
和转储输出:
使用 'getResult' 和 'getArrayResult' 我得到一个多维数组,在第一维中,我得到所有电子邮件(电子邮件是关键)。我更接近我的目标,但它并不完美。我正在寻找“轻量级”的方式(对不起我的英语-_-),我想只收到电子邮件(而不是电子邮件+另一个无用的用户信息),因为我想执行尽可能简单的查询。可能吗 ?