2012-02-13 8 views
1

プロジェクトで初めてdoctrineを使用していますが、クエリビルダーにいくつか問題があります。Doctrine symfony2のQuerybuilderに問題があります。使用の質問

$conn = $this->get('database_connection'); 
$users = $conn->fetchAll('SELECT * FROM Users'); 

これがうまく働いていたし、私のDBからユーザーの配列を返します:私は次のように使用されるコントローラで

まずアップ、。

次に、クエリビルダを使用してすべてのユーザーの名前を取得しようとしました。例を見て、私は以下のが見つかりました:

$conn = $this->get('database_connection'); 
$qb = $conn->createQueryBuilder(); 

$qb->select("forename") 
    ->from("Users", "u") 
    ->where("u.id = :user_id") 
    ->setParameter('user_id', 1); 

    $query = $qb->getQuery(); 
    $results = $query->getResults(); 

私はgDoctrine \ DBAL \クエリー\ QueryBuilder :: getQuery()メソッドは、私が使用したほとんどすべての例として、奇数見つけた、定義されていないと言われますそれ。

私は検索しましたが、Doctrine documentationが見つかりましたが、私は今、それをまったく使用する方法が混乱しています。

idを持つユーザのforenameを取得するために上記をどのように使用するかの例を人に教えてもらえますか?単純な例があれば、そこからうまくいくはずです。

ありがとうございます!

は解決:

$conn = $this->get('database_connection'); 
$qb = $conn->createQueryBuilder(); 

$stmt = $qb->select("forename") 
    ->from("Users", "u") 
    ->where("u.id = :user_id") 
    ->setParameter('user_id', 1) 
    ->execute(); 

$userNames = $stmt->fetchAll(); 

一般的な考え方は、executeメソッドは、Aを返すということで: (と他人からの助けを借りて)ドキュメントを見た後、私は次のようにqueryBuilderための一般的なレイアウトがあるましたDoctrine \ DBAL \ Driver \ Statementに格納され、パラメータは指定されたとおりに設定されます。このステートメントから、hereと記載されているさまざまなメソッドの1つを呼び出して、DBから結果を取得できます。

これは、問題を抱えている他の人に役立ちます。

答えて

0

私はあなたが教義に関する文書とsymfonyでそれを使用することによって少し混乱するかもしれないと思います。エラーメッセージからDBAL \ Query \ QueryBuilderを取得しています。そのオブジェクトのメソッドgetQueryはありません。 executeメソッドを使用して、必要な結果を得ることができるはずです。そのビーイングと今

+0

...私はそれを行うような方法は、ユーザーエンティティのリポジトリクラスのいずれかを介して行われ、または私はあなたが前にやっていた何をすべきか、その後

$em = $this->get('doctrine.orm.entity_manager'); $qb = $em->createQueryBuilder(); 

を行うと述べましたありがとう!ええ、私は脳にZend_Dbを持っていて、これが同じように動作することを期待している半分でした。上記の実装は、DoctrineのORM側(私は別のプロジェクトで使用しています)に非常に関連しています。しかし、このプロジェクトでは、すべてのモデルとマッパーが用意されているので、DBALを使用したかっただけです。私がエンティティを持っていないとき(Doctrineの意味で)エンティティマネージャを参照するのは私にとっては奇妙に思えたので、DB接続を介してそれを使用したいと思っていました。ただ個人的な好み。私は最後にそこに行く(編集された質問を参照)。ありがとう! – steveYeah

関連する問題