在Doctrine 2中对可排序行为进行排序(Symfony 2)

Tru*_*ago 5 php symfony doctrine-orm doctrine-extensions

我创建了一个具有Sortable行为的实体,并且有一个关于使用它的问题.
设置和获取位置的方法对我来说还不够,所以我想用以下代码做简单的 moveUpmoveDown方法:

public function moveUp() {
    ++$this->position;
}

public function moveDown() {
    if($this->position != 0)
        --$this->position;
}
Run Code Online (Sandbox Code Playgroud)

通过此实现,moveUp方法没有限制使用已经最大位置递增项目.禁止递增此类物品的最佳方法是什么?我听说直接在实体中进行自定义查询不是一个好习惯,那么如何检查项目是否已经具有最大值?

Ged*_*nas 0

好吧,您可以挂钩一个事件侦听器,它将使用从数据库获取的最大值填充 SortableMaxAware 接口实体。这当然很麻烦,但是嘿,你正在使用 ORM :) 玩得开心。