symfony 4から、サンプルリポジトリクラスを作成します。このクラスから、私はすべての電子メールのユーザーのリストを取得するためのメソッドを作成しました。symfony 4、doctrine、getResult、getArrayResultとgetScalarResultは同じ構造体の結果を返します
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' で
私は多次元配列を取得し、最初に私はすべての電子メールを取得します(電子メールが鍵です)。私はもっと目標に近づくが、完璧ではない。私は可能な限り単純なクエリを実行したいので、私は '軽量'の方法を(私の英語-_-)申し訳ありません、私は電子メールだけ(電子メール+別の役に立たないユーザー情報)を取得したいと思います。出来ますか ?
おかげで、私は私の方法をmodifiy。私はdiffernt結果を得るが、私は単純な1次元配列を持っていない – user2137454