From symfony 4, I create a sample repository class. From this class, I created a method for get the list of all email's users. I would like get a array structure like this :
array(
"email1",
"email2",
"email3",
...
)
But with 'getResult' I get a multidimensional array. Then, I tested with getArrayResult and getScalarResult and I obtain each time exactly the same array structure result !
Below, my Service Class :
<?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(),
);
}
}
And the result when I dump the output of "getAllEmail()" :
Why getResult / getArrayResult / getScalarResult return exactly same array structure ? I do a mistake somewhere ?
Edit : I modified my Repository Class :
public function getAllEmail(){
$result = $this->createQueryBuilder('u','u.email')
->setMaxResults(5)
->getQuery();
return array(
"getResult" => $result->getResult(),
"getArrayResult" => $result->getArrayResult(),
"getScalarResult" => $result->getScalarResult(),
);
}
And the dump output :
With 'getResult' and 'getArrayResult' I get an multidimensional array and in the first dimension, I get all email (emails are the key). I approach more my goal but its not perfect. I'm looking for the 'light weight' way (sorry for my english -_-), I would like get only email (and not email + another useless users information) because I want execute the simplest query as possible. Is it possible ?