Php 再次重申所有实体。如果没有条令,我可以使用单一更新sql查询。如果您想采用更新查询方法,可以使用D2的NativeQuery对象。作为一个ORM,Doctrine的默认方法是使用您的实体,这将涉及首先从db获取它们。使用Doctrine提供的各种缓存可以提

Php 再次重申所有实体。如果没有条令,我可以使用单一更新sql查询。如果您想采用更新查询方法,可以使用D2的NativeQuery对象。作为一个ORM,Doctrine的默认方法是使用您的实体,这将涉及首先从db获取它们。使用Doctrine提供的各种缓存可以提,php,doctrine-orm,jquery-ui-sortable,Php,Doctrine Orm,Jquery Ui Sortable,再次重申所有实体。如果没有条令,我可以使用单一更新sql查询。如果您想采用更新查询方法,可以使用D2的NativeQuery对象。作为一个ORM,Doctrine的默认方法是使用您的实体,这将涉及首先从db获取它们。使用Doctrine提供的各种缓存可以提高性能。您找到解决方案了吗?我现在在找这个,想知道你最后用了什么? sort_order: type: integer(4) default: 10 $this->result = Doctrine_Core::getT


再次重申所有实体。如果没有条令,我可以使用单一更新sql查询。如果您想采用更新查询方法,可以使用D2的NativeQuery对象。作为一个ORM,Doctrine的默认方法是使用您的实体,这将涉及首先从db获取它们。使用Doctrine提供的各种缓存可以提高性能。您找到解决方案了吗?我现在在找这个,想知道你最后用了什么? sort_order: type: integer(4) default: 10 $this->result = Doctrine_Core::getTable('CustomerTable') ->createQuery('a')->orderBy("a.sort_order asc, a.id desc")->execute();
use Doctrine\Common\EventSubscriber,
    Doctrine\ORM\Events,
    Doctrine\ORM\Event\LifecycleEventArgs,
    Doctrine\ORM\Event\PreUpdateEventArgs;


class SortableBehavior implements EventSubscriber
{
   public function getSubscribedEvents()
   {
      return array(Events::prePersist, Events::preUpdate);
   }

   public function prePersist(LifeCycleEventsArgs $args)
   {
     // the entity being persisted
     $entity = $args->getEntity();
     if ($entity instanceof SortableInterface) {
        //perform sorting magic
     }
   }

   public function preUpdate(preUpdateEventsArgs $args)
   {
     // the entity being updated
     $entity = $args->getEntity();
     if ($entity instanceof SortableInterface) {
        //perform sorting magic
     }
   }
}
$eventManager = $entityManager->getEventManager();
$eventManager->addEventSubscriber(new SortableBehavior());
/**
 * Searches for the element above and switches them
 * with eachother. Performs a EntityManager::flush()
 * to save the results after the switch.
 */
public function sortUp() {

    try {
        $em = \Zend_Registry::get("entitymanager");

        $class_name = get_class($this);
        $dql = "SELECT ut FROM $class_name ut WHERE ut.inactive IS NULL AND ut.inactive IS NULL AND ut.sort < '" . $this->getSort() . "' ORDER BY ut.sort DESC";
        $query = $em->createQuery($dql);
        $query->setMaxResults(1);
        $ut = $query->getResult();
    } catch (Exception $exc) {
        throw new Exception("Error when looking for sortable partner: " . $exc->getMessage());
    }

    if (count($ut)) {
        $this->_switchSortAndSave($ut[0]);
    }
}

/**
 * Searches for the element below and switches them
 * with eachother. Performs a EntityManager::flush()
 * to save the results after the switch.
 */
public function sortDown() {
    try {
        $em = \Zend_Registry::get("entitymanager");

        $class_name = get_class($this);
        $dql = "SELECT ut FROM $class_name ut WHERE ut.inactive IS NULL AND ut.sort > '" . $this->getSort() . "' ORDER BY ut.sort ASC";
        $query = $em->createQuery($dql);
        $query->setMaxResults(1);
        $ut = $query->getResult();
    } catch (Exception $exc) {
        throw new Exception("Error when looking for sortable partner: " . $exc->getMessage());
    }


    if (count($ut)) {
        $this->_switchSortAndSave($ut[0]);
    }
}

private function _switchSortAndSave(\Entities\Usertype $switch_entity) {
    $new_sort = $switch_entity->getSort();
    $switch_entity->setSort($this->getSort());
    $this->setSort($new_sort);

    $em = \Zend_Registry::get("entitymanager");
    $em->persist($switch_entity);
    $em->persist($this);
    $em->flush();
}

/**
 * Looks for the last entry according to sort order
 * and returns that if found.
 * 
 * @return Entity|null
 */
public static function findLast() {
    try {
        $em = \Zend_Registry::get("entitymanager");

        $class_name = get_called_class();
        $dql = "SELECT ut FROM $class_name ut ORDER BY ut.sort DESC";
        $query = $em->createQuery($dql);
        $query->setMaxResults(1);
        $ut = $query->getResult();
    } catch (Exception $exc) {
        throw new Exception("Error when searching for last $class_name: " . $exc->getMessage());
    }

    if (count($ut))
        return $ut[0];
    else
        return null;
}