symfonyフレームワークは、php経由でいくつかのメンテナンスタスクを実行できるapp/consoleファイルを備えています。ユーザーはDQLクエリを実行することもできます。Doctrineは特定のフィールドを選択できません
# php app/console doctrine:query:dql --hydrate=array \
'SELECT u.id, u.nameFirst, u.nameLast FROM DatabaseBundle:User u'
array
0 =>
array
'id' => string '1' (length=1)
'nameFirst' => string 'jaroslav' (length=8)
'nameLast' => string 'rakhmatoullin' (length=13)
1 =>
array
'id' => string '2' (length=1)
'nameFirst' => string 'Båb Kåre' (length=10)
'nameLast' => string 'Ytrefoss' (length=8)
3つの特定の列を選択したことを確認してください。私が抱えている問題は、2つのテーブルが結合されていると、同様のクエリでエラーが発生するということです。
# php app/console doctrine:query:dql --hydrate=array \
'SELECT u.id , r FROM DatabaseBundle:User u JOIN u.roles r'
[Doctrine\ORM\Query\QueryException]
[Semantical Error] line 0, col -1 near 'SELECT u.id ,':
Error: Cannot select entity through identification variables
without choosing at least one root entity alias.
全体のユーザーが自分の役割で参加し、次のリターン:明らか
# php app/console doctrine:query:dql --hydrate=array \
'SELECT u, r FROM DatabaseBundle:User u JOIN u.roles r'
、私は何かが欠けています。
アイデア?適切なドキュメントへのリンクも(この特定の問題については)感謝します。 documentation on "Partial Object Syntax"から
私は非常によく、エラーメッセージを理解していないが、私は同様のエラーメッセージを経験し、そしてr.idを選択することで、私の問題を解決思い出し、私はあなたがより多くのフィールドを選択してみてくださいべきだと思います。 – greg0ire
これはどう? '' SELECT u.id、r。* FROM DatabaseBundle:User u JOIN u.roles r'' – jere
greg0ireは正しいです。私はあなたがそのようなクエリで単一のフィールドと "エンティティ"オブジェクトを選択することはできないと思う。 – jere