2012-01-10 8 views
0

Doctrine ORMを使用してMySQLから製品レコードセットを取得しようとしました。私は、カテゴリフィールドの値は、これらの値を含めることができます正規表現を使用してレコードのグループを選択する必要があります。Doctrine&Regular Expression

カテゴリ

12/43/45/101/109

OR

カテゴリ

1/12/43/45/101/109

OR

カテゴリ

43/45/101/109/12

これは私の教義のコードです:

$id = 12 
$dq = Doctrine_Query::create() 
      -> from ('Products p') 
      -> leftJoin("p.ProductsData pd WITH pd.language_id = $locale") 
      -> leftJoin("p.ProductsAttributesGroups pag") 
      -> where('p.enabled = ?', 1) 
      -> andWhere ("(categories REGEXP \"^$id[\\\]*\" OR " . 
         "categories REGEXP \"^[\\\]$id*\" OR " . 
         "categories REGEXP \"^[\\\]$id[\\\]*)\")") 
      -> orderBy('position asc'); 

私は$id変数を持っています私はこのレコードのすべてを選択する必要があります。$CATIDが存在します。私はMySQLの関係やジョインを使用することはできません。

+6

あなたの問題を解決した場合は、回答を投稿し、将来の訪問者に受け入れられるとしてください。 –

答えて

0

は、私の場合、簡単なソリューションでした。この1:

//カテゴリは、このように書かれている製品テーブルで選択したカテゴリを取得:\ 12 \ 85 \ 53

224 \

$ reg1 = "categories like '" $ id。 "/%'";
$ reg2 = "'%/"のようなカテゴリ。$ id。 "'";
$ reg3 = "'%/"。$ idのようなカテゴリ "/%'";
$ dq-> andWhere( "($ reg1 OR $ reg2 OR $ reg3)");