2016-10-03 13 views
0

私はSELECT d.user AS userクエリの種類を実行しようとします。しかし、この部分はドクトリンに許されていないようです。Doctrine SELECT d.user ASユーザーは許可されていませんか?

私は次のように素敵な配列を取得しよう:

array(
    'week' => 39 
    'year' => 2016 
    'user' => UserObject{} 

私は、次のDQL持っている:もちろん

$qb = $this->createQueryBuilder('d') 
     ->select("d.user AS user, WEEK(d.date, 3) AS week, DATE_FORMAT(d.date, '%x') AS year") 
     ->join('d.user', 'u') 
     ->orderBy('d.date', 'ASC') 
     ->getQuery(); 

    return $qb->getResult(); 

を私は直接ユーザーを持つようにしたいが、私はselect("d, etcを行うことができます戻り値の配列のキーとして使用します。私は上記のコードで取得

エラーは次のとおりです。 [Semantical Error] line 0, col 9 near 'user AS user,': Error: Invalid PathExpression. Must be a StateFieldPathExpression.

私はすでに参加追加されているが、それは助けていないようです。

+0

私はあなたが間違った側で問題を抱えていると思います。ユーザーを取得する場合は、クエリをユーザーエンティティ上に置くべきではなく、他のエンティティ上の条件に対して結合する必要がありますか?もう一つの指針は、 'user'が多くのSGBDで予約されているキーワードであることです(使用しているものが分からない場合)、エイリアスを変更したり、引用符で囲む必要があります。 – Boulzy

+0

@Boulzy、ご返信ありがとうございます!私は既に同盟国を変更したが、それは助けにならなかった。私がこの疑問を持って来る理由は、私が* - * select( 'd、...)'を行うことができるということです。私は、ユーザーを直接選択したいだけなので、データ配列は私が望むのと同じです。 – DelphiLynx

答えて

1

私はそれが正確にあなたが望む結果を与えるか分からない(たぶんDoctrine\ORM\Query::HYDRATE_ARRAYハイドレーターを試してみる必要があります)が、そのトリックは何かできますか?

$qb = $this->createQueryBuilder('d') 
      ->select("user, WEEK(d.date, 3) AS week, DATE_FORMAT(d.date, '%x') AS year") 
      ->leftJoin('d.user', 'user') 
      ->orderBy('d.date', 'ASC') 
      ->getQuery(); 

return $qb->getResult(); 
関連する問題