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