gpt4 book ai didi

jquery-ui - Doctrine2 可排序更新位置

转载 作者:行者123 更新时间:2023-12-04 15:44:54 26 4
gpt4 key购买 nike

我正在使用带有 Symfony 2.3 和 jQuery UI 可排序的 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在这张 table 上。

编辑:

我正在使用 StofDoctrineExtensionsBundle与 Gedmo DoctrineExtension这是配置:
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):
Acme\DemoBundle\Entity\Pyramid:
type: entity
table: pyramid
fields:
id:
id: true
type: integer
unsigned: false
nullable: false
generator:
strategy: IDENTITY
position:
type: integer
unsigned: false
nullable: false
gedmo:
- sortablePosition
title:
type: string
length: 255
fixed: false
nullable: false

我认为我不需要更改 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;

关于jquery-ui - Doctrine2 可排序更新位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19889652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com