2012-01-10 44 views
0

我试图从Doctrine ORM获取MySQL的产品记录集。我使用正则表达式来选择一组记录,其中类别字段值可以包含这些值:学说和正则表达式

类别

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变量我需要选择这个所有的记录存在。我无法使用MySQL关系和/或连接。

+6

如果您已经解决了您的问题,请随时发布答案并将其标记为未来访问者接受的答案。 – 2012-01-10 16:20:20

回答

0

在我的情况下,简单的解决办法是这样的一个:

//获取在该类别已经写在这样的产品表中选择的类别:\ 12 \ 224 \ 85 \ 53

$ reg1 =“类似于'”。$ id。“/%'”;
$ reg2 =“类似'%/”。$ id。“'”;
$ reg3 =“类似'%/”。$ id。“/%'”;
$ dq-> andWhere(“($ reg1 OR $ reg2 OR $ reg3)”);