Browse Source

[sluggable] do not take sluggable identifier into similar slug lookup query

gedi 13 years ago
parent
commit
1ecc16dd5d

+ 1 - 1
lib/Gedmo/Sluggable/Mapping/Event/Adapter/ODM.php

@@ -27,7 +27,7 @@ final class ODM extends BaseAdapterODM implements SluggableAdapter
         $dm = $this->getObjectManager();
         $dm = $this->getObjectManager();
         $qb = $dm->createQueryBuilder($config['useObjectClass']);
         $qb = $dm->createQueryBuilder($config['useObjectClass']);
         $identifier = $this->extractIdentifier($dm, $object);
         $identifier = $this->extractIdentifier($dm, $object);
-        if ($identifier) {
+        if ($identifier && !$meta->isIdentifier($config['slug'])) {
             $qb->field($meta->identifier)->notEqual($identifier);
             $qb->field($meta->identifier)->notEqual($identifier);
         }
         }
         $qb->field($config['slug'])->Equals(new \MongoRegex('/^' . str_replace('/', '\/', $slug) . '/'));
         $qb->field($config['slug'])->Equals(new \MongoRegex('/^' . str_replace('/', '\/', $slug) . '/'));

+ 1 - 1
lib/Gedmo/Sluggable/Mapping/Event/Adapter/ORM.php

@@ -35,7 +35,7 @@ final class ORM extends BaseAdapterORM implements SluggableAdapter
         $entityIdentifiers = $this->extractIdentifier($em, $object, false);
         $entityIdentifiers = $this->extractIdentifier($em, $object, false);
         $parameters = array();
         $parameters = array();
         foreach ((array)$entityIdentifiers as $field => $value) {
         foreach ((array)$entityIdentifiers as $field => $value) {
-            if (strlen($value)) {
+            if (strlen($value) && !$meta->isIdentifier($config['slug'])) {
                 $qb->andWhere('rec.' . $field . ' <> :' . $field);
                 $qb->andWhere('rec.' . $field . ' <> :' . $field);
                 $parameters[$field] = $value;
                 $parameters[$field] = $value;
             }
             }