【问题标题】:How to achieve a watcher on symfony如何在 symfony 上实现观察者
【发布时间】:2018-04-17 00:10:58
【问题描述】:

假设我有以下实体:

用户

class User{
    private $id;
    private $name;
    private $active;
    private $clients;
}

客户

class Client{
    private $id;
    private $name;
    private $active;
    private $subdomain;
    private $users;
}

子域

class Subdomain{
    private $id;
    private $name;
    private $active;
}

使用所有的 setter 和 getter,orm 表和关系。用户和客户是多对多的关系,而客户和子域是一对一的关系。

我想要实现的是在至少一个用户处于活动状态之前不激活客户端,并且该客户端在其子域处于活动状态之前不会处于活动状态。 现在我现在可以简单地通过创建一些函数来完成,并在实体更新时调用它,当我拥有所有isActive() 为真时,我会在所需用户上调用 setActive。但是我正在四处寻找实体或记录观察者之类的东西,因此每当更新记录时会自动检查某些字段,然后更新该用户的字段。换句话说,我不想手动调用 setActive() 和 checkForClientAndSubdomainActivity() 函数。那么有没有类似的东西已经建成了呢?还是我应该建造它?

提前谢谢,我删掉了大部分代码只是为了便于阅读。

【问题讨论】:

  • 从 Sf 3.4 你有 workflow component 它带有许多不同的配置。我不太了解您的需求,但您可以看看:)

标签: database symfony doctrine


【解决方案1】:

每次对特定实体执行更新时,您都可以使用 Doctrine 的事件进行操作(还有更多事件):doc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多