学说与教育正则表达式

时间:2012-01-10 13:11:48

标签: php mysql doctrine

我试图通过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变量,我需要选择存在此$CATID的所有记录。我不能使用MySQL关系和/或加入。

1 个答案:

答案 0 :(得分:0)

我的案例中的简单解决方案是:

//在products表中选择以这种方式编写类别的类别:\ 12 \ 224 \ 85 \ 53

  

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