2011-06-22 10 views
3

私はGoogleで十分な調査をしていないのですが、正直言って私は何を検索するのか正確にはわかりません。私の問題はDoctrineです。私はsymfonyフレームワークを使用して、私はDQLで、次の生のクエリを書きたい:Doctrineのクエリ言語に左寄せ

SELECT c.id AS id, 
c.name AS name, 
c.active AS active, 
count(c2.id) AS depth, 
(c.rht - c.lft) as rng 
FROM (categories c 
LEFT JOIN categories c2 ON ((c2.lft < c.lft) AND (c2.rht > c.rht) AND c2.active)) 
GROUP by c.id 
ORDER by c.lft ASC 

私は生のクエリのようにそれを書くことができますが、私はsfWidgetFormDoctrineChoiceウィジェットのためにそれを使用したいと私はDQLでそれを必要とします。どんな助けも高く評価されます。

ありがとうございます!

+0

Doctrine 1.x or 2.x? – borrible

+0

申し訳ありませんが、私はこの初期の1.2のことを忘れていました(私はまだSymfony 1.4に固執しています) – fanjabi

答えて

3

可能approuchは次のようになります。

$query = Doctrine_Query::create() 
    ->select('c.name AS name, 
      c.active AS active, 
      count(c2.id) AS depth, 
      (c.rht - c.lft) as rng') 
    ->from('categories c') 
    ->leftJoin('c.Categories c2 ON ((c2.lft < c.lft) AND (c2.rht > c.rht) AND c2.active') 
    ->groupBy('c.id') 
    ->orderBy('c.lft ASC'); 

しかし、私は間違った方法であなたのだと思います。あなたは教義の木の振る舞いをチェックしましたか? http://www.doctrine-project.org/documentation/manual/1_0/nl/hierarchical-data#nested-set:advanced-usage:fetching-a-tree-with-relations

+1

提案していただきありがとうございます。これは私の質問の答えではありません。助けてくれてありがとう! S.私はそれを行うことができましたが、Doctrineに参加するにはローカルと外部の列との関係が必要なので、ダミーの関係を作成しました。したがって、左の結合を作成して、デフォルトではlocal.foreign_id = foreign.id関係 – fanjabi