gpt4 book ai didi

php - 学说 2 可排序

转载 作者:行者123 更新时间:2023-12-02 01:21:12 28 4
gpt4 key购买 nike

客户需要根据需要更改项目的顺序,这意味着我需要一些“顺序”或“顺序”列来保存每个项目的实际位置。

如何使用 Doctrine 2 来实现这一点?

最佳答案

我会使用 Doctrine 的 event system 来实现它。为了添加行为,我通常会编写一个事件订阅者并使用实体类实现的接口(interface)强制执行规则。我将实际逻辑保留在某个服务对象中(您需要自己完成)。

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());

关于php - 学说 2 可排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4217778/

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