Jquery ui Doctrine2可排序更新位置

Jquery ui Doctrine2可排序更新位置,jquery-ui,symfony,doctrine-orm,jquery-ui-sortable,Jquery Ui,Symfony,Doctrine Orm,Jquery Ui Sortable,我正在使用Symfony 2.3和jQuery UI sortable的Doctrine 2 我有一个可以用jQuery排序的元素列表,位置通过Ajax请求保存在数据库中 除了数据持久性之外,所有这些似乎都工作得很好。。。元素及其相关的其他元素在数据库中的位置错误 例如: | ID | POSITION | TITLE | 1 | 0 | Element 1 | 2 | 1 | Element 2

我正在使用Symfony 2.3和jQuery UI sortable的Doctrine 2

我有一个可以用jQuery排序的元素列表,位置通过Ajax请求保存在数据库中

除了数据持久性之外,所有这些似乎都工作得很好。。。元素及其相关的其他元素在数据库中的位置错误

例如:

| ID         | POSITION   | TITLE

| 1          | 0          | Element 1

| 2          | 1          | Element 2

| 3          | 2          | Element 3

| 4          | 3          | Element 4
如果我将ID 3(位置3)移动到位置0,我会在数据库中得到以下结果:

| ID         | POSITION   | TITLE

| 1          | 2          | Element 1

| 2          | 2          | Element 2

| 3          | 0          | Element 3

| 4          | 4          | Element 4
我检查了,插入的值是正确的(0)

我正在使用此代码更新职位:

$pyramid = $this->getDoctrine()->getRepository('MarquisWebsiteBundle:Pyramid')->find($id);
$pyramid->setPosition($position);
$em->persist($pyramid);
$em->flush();
如果我将元素1从位置0移动到位置1,效果会很好

我没有在此表上使用任何
SortableGroup

编辑:

我正在对Gedmo
DoctrineExtension
使用
StofDoctrineExtensionsBundle
,下面是配置:

doctrine:
    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true
        mappings:
            gedmo_sortable:
                type: annotation
                prefix: Gedmo\Sortable\Entity
                dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Sortable/Entity"
                alias: GedmoSortable
                is_bundle: false
            gedmo_translatable:
                type: annotation
                prefix: Gedmo\Translatable\Entity
                dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
                alias: GedmoTranslatable
                is_bundle: false

stof_doctrine_extensions:
    default_locale: en_GB
    translation_fallback: true
    orm:
        default:
            sortable: true
            translatable: true
以及实体(Pyramid.orm.yml):

我认为我不需要更改Pyramid.php类中的任何内容,该类如下所示:

/**
 * Pyramid
 *
 * @ORM\Table(name="pyramid")
 * @ORM\Entity
 */
class Pyramid
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var integer
     *
     * @ORM\Column(name="position", type="integer", nullable=false)
     */
    private $position;

    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=255, nullable=false)
     */
    private $title;

我认为您需要包括
SortablePosition
注释:

/**
 * @Gedmo\SortablePosition
 * @ORM\Column(name="position", type="integer", nullable=false)
 */
private $position;

您是否正在使用Gedmo\DoctrineExtensions和StofDoctrineExtensions?请提供更多的代码-实体、映射…谢谢您的帮助。我刚刚在问题帖中补充了一些信息。你知道这个吗?不,不幸的是。。。我不是全职和Symfony一起工作,现在转移到其他项目。不过,如果有人找到解决办法,我会很高兴知道!我想看看你在这上面使用的jQuery代码。你能提供给@pjehan吗?提前谢谢!我需要一个类似的场景。也许我会找到解决办法。
/**
 * @Gedmo\SortablePosition
 * @ORM\Column(name="position", type="integer", nullable=false)
 */
private $position;