Jelajahi Sumber

tweak the ModelManager find* methods

Thomas Rabaix 13 tahun lalu
induk
melakukan
f9f72e08bb
3 mengubah file dengan 44 tambahan dan 14 penghapusan
  1. 1 1
      Admin/Admin.php
  2. 17 7
      Model/ModelManagerInterface.php
  3. 26 6
      Model/ORM/ModelManager.php

+ 1 - 1
Admin/Admin.php

@@ -1054,7 +1054,7 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
      */
     public function getObject($id)
     {
-        return $this->modelManager->findOne($this->getClass(), $id);
+        return $this->modelManager->find($this->getClass(), $id);
     }
 
     /**

+ 17 - 7
Model/ModelManagerInterface.php

@@ -67,18 +67,28 @@ interface ModelManagerInterface
      * @param array $criteria
      * @return object
      */
-    function find($class, array $criteria = array());
+    function findBy($class, array $criteria = array());
 
     /**
-     * @param string $class
-     * @param integer $id
-     * @return object
+     * @abstract
+     * @param $class
+     * @param array $criteria
+     * @return void
      */
-    function findOne($class, $id);
+    function findOneBy($class, array $criteria = array());
 
     /**
-     * @param string $class classname
-     * @param array $idx
+     * @abstract
+     * @param $class
+     * @param $id
+     * @return void
+     */
+    function find($class, $id);
+
+    /**
+     * @abstract
+     * @param $class
+     * @param \Sonata\AdminBundle\Datagrid\ProxyQueryInterface $queryProxy
      * @return void
      */
     function batchDelete($class, ProxyQueryInterface $queryProxy);

+ 26 - 6
Model/ORM/ModelManager.php

@@ -114,17 +114,32 @@ class ModelManager implements ModelManagerInterface
      * @param string|int $id Identifier. Can be a string with several IDs concatenated, separated by '-'.
      * @return Object
      */
-    public function findOne($class, $id)
+    public function find($class, $id)
     {
         $values = array_combine($this->getIdentifierFieldNames($class), explode('-', $id));
         return $this->entityManager->getRepository($class)->find($values);
     }
 
-    public function find($class, array $criteria = array())
+    /**
+     * @param $class
+     * @param array $criteria
+     * @return array
+     */
+    public function findBy($class, array $criteria = array())
     {
         return $this->entityManager->getRepository($class)->findBy($criteria);
     }
 
+    /**
+     * @param $class
+     * @param array $criteria
+     * @return array
+     */
+    public function findOneBy($class, array $criteria = array())
+    {
+        return $this->entityManager->getRepository($class)->findOneBy($criteria);
+    }
+
     /**
      * @return \Doctrine\ORM\EntityManager
      */
@@ -154,8 +169,9 @@ class ModelManager implements ModelManagerInterface
     }
 
     /**
+     * @param $class
      * @param string $alias
-     * @return \Doctrine\ORM\QueryBuilder a query instance
+     * @return \Doctrine\ORM\QueryBuilder
      */
     public function createQuery($class, $alias = 'o')
     {
@@ -164,6 +180,10 @@ class ModelManager implements ModelManagerInterface
         return $repository->createQueryBuilder($alias);
     }
 
+    /**
+     * @param $query
+     * @return mixed
+     */
     public function executeQuery($query)
     {
         if ($query instanceof QueryBuilder) {
@@ -293,7 +313,7 @@ class ModelManager implements ModelManagerInterface
      *
      * @param \Sonata\AdminBundle\Admin\FieldDescriptionInterface $fieldDescription
      * @param \Sonata\AdminBundle\Datagrid\DatagridInterface $datagrid
-     * @return string
+     * @return array
      */
     public function getSortParameters(FieldDescriptionInterface $fieldDescription, DatagridInterface $datagrid)
     {
@@ -316,7 +336,7 @@ class ModelManager implements ModelManagerInterface
     /**
      * @param \Sonata\AdminBundle\Datagrid\DatagridInterface $datagrid
      * @param $page
-     * @return void
+     * @return array
      */
     public function getPaginationParameters(DatagridInterface $datagrid, $page)
     {
@@ -343,7 +363,7 @@ class ModelManager implements ModelManagerInterface
     /**
      * @param string $class
      * @param object $instance
-     * @return void
+     * @return mixed
      */
     public function modelTransform($class, $instance)
     {