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」を使用して多次元配列を取得し、最初の次元ですべての電子メールを取得します (電子メールが重要です)。私は自分の目標に近づいていますが、完璧ではありません。私は「軽量」な方法を探しています(私の英語で申し訳ありません-_-)、できるだけ単純なクエリを実行したいので、メールのみを取得したいと思います(メール+別の役に立たないユーザー情報ではありません)。出来ますか ?