Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 关注点分离-通过使用服务控制2个从属实体?_Php_Laravel_Design Patterns_Service - Fatal编程技术网

Php 关注点分离-通过使用服务控制2个从属实体?

Php 关注点分离-通过使用服务控制2个从属实体?,php,laravel,design-patterns,service,Php,Laravel,Design Patterns,Service,我有两项服务:ProfileService知道如何操作Profile模型(laravel Elount)和ListService知道如何操作List模型配置文件与列表具有一对多关系。这些雄辩的模型定义了关系 我的问题是关于关注点的分离。我打算让ProfileService只使用Profile做事情,而ListService只使用List做事情 在遵守以下要求的同时,我需要什么样的设计模式或构造 我需要Profile对象上的destroyProfile方法,该方法可以删除Profile,并导致其

我有两项服务:
ProfileService
知道如何操作
Profile
模型(laravel Elount)和
ListService
知道如何操作
List
模型<代码>配置文件与
列表
具有一对多关系。这些雄辩的模型定义了关系

我的问题是关于关注点的分离。我打算让
ProfileService
只使用
Profile
做事情,而
ListService
只使用
List
做事情

在遵守以下要求的同时,我需要什么样的设计模式或构造

  • 我需要
    Profile
    对象上的
    destroyProfile
    方法,该方法可以删除
    Profile
    ,并导致其相关的
    列表也被删除

我想我需要第三个服务,
ProfileService
可以用来删除这两个模型。

为什么不让数据库处理删除

    Schema::table('lists', function (Blueprint $table) {
        $table->unsignedInteger('profile_id');
        $table->foreign('profile_id')
            ->references('id')
            ->on('profiles')
            ->onDelete('cascade');
    });

为什么不让数据库处理删除

    Schema::table('lists', function (Blueprint $table) {
        $table->unsignedInteger('profile_id');
        $table->foreign('profile_id')
            ->references('id')
            ->on('profiles')
            ->onDelete('cascade');
    });

让另一个服务/类/对象使用组合(将两个模型添加为依赖项)并执行魔术。让另一个服务/类/对象使用组合(将两个模型添加为依赖项)并执行魔术。这将是一个选项。我更愿意做的是使用某种我还不熟悉的设计模式。我想我需要中介模式,我正在尝试实现它,看看它是否能像我想要的那样工作。我不想让数据库处理删除的主要原因是,我预计在不久的将来会出现更复杂的关系,这需要的不仅仅是删除数据。明白了。那么,在这种情况下,您需要观察者模式。侦听事件(已删除配置文件),然后处理事件(删除相关列表等)。这将是一种选择。我更愿意做的是使用某种我还不熟悉的设计模式。我想我需要中介模式,我正在尝试实现它,看看它是否能像我想要的那样工作。我不想让数据库处理删除的主要原因是,我预计在不久的将来会出现更复杂的关系,这需要的不仅仅是删除数据。明白了。那么,在这种情况下,您需要观察者模式。侦听事件(已删除配置文件),然后处理事件(删除相关列表等)。