Доктрина и регулярное выражение - PullRequest
0 голосов
/ 10 января 2012

Я пытался получить набор записей продуктов из MySQL с помощью Doctrine ORM.Я должен выбрать группу записей, используя регулярное выражение, где значение поля категории может содержать следующие значения:

категории

12/43/45/101/109

ИЛИ

категории

1/12/43/45/101/109

ИЛИ

категории

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 голосов
/ 12 января 2012

Простое решение в моем случае было таким:

// Получить категорию, выбранную в таблице продуктов, где категории были записаны таким образом: \ 12 \ 224 \ 85 \ 53

$ reg1 = "категории, подобные '". $ Id. "/%'";$ reg2 = "категории типа '% /". $ id. "'";$ reg3 = "категории типа"% / ". $ id." /% '";$ dq-> andWhere ("($ reg1 OR $ reg2 OR $ reg3)");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...