Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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 如何组织两个操作:创建两个模型并将一个模型链接到另一个模型或仅创建一个模型(取决于用户的选择)_Php_Design Patterns_Laravel 5_Architecture - Fatal编程技术网

Php 如何组织两个操作:创建两个模型并将一个模型链接到另一个模型或仅创建一个模型(取决于用户的选择)

Php 如何组织两个操作:创建两个模型并将一个模型链接到另一个模型或仅创建一个模型(取决于用户的选择),php,design-patterns,laravel-5,architecture,Php,Design Patterns,Laravel 5,Architecture,我不知道在这种情况下该怎么办。 我有两种型号: 注释(任务id、文本) 任务(标题、优先级、类型、说明) 我需要让用户选择如何创建此模型: 创建任务本身 创建一个简单的注释(task_id=null) 将评论创建为任务(不要问为什么,这是我想法的一部分:) 前两个都完成了,我有单独的控制器和方法。但最后一个问题有点棘手: 当用户按下“将注释创建为任务”(+他用任务属性填写表单)时,服务器端应创建一个新任务,然后创建一个新注释,其中包含指向已创建任务的task_id链接。我所能想象的就是肮

我不知道在这种情况下该怎么办。 我有两种型号:

  • 注释(任务id、文本)
  • 任务(标题、优先级、类型、说明)
我需要让用户选择如何创建此模型:

  • 创建任务本身
  • 创建一个简单的注释(task_id=null)
  • 将评论创建为任务(不要问为什么,这是我想法的一部分:)
前两个都完成了,我有单独的控制器和方法。但最后一个问题有点棘手: 当用户按下“将注释创建为任务”(+他用任务属性填写表单)时,服务器端应创建一个新任务,然后创建一个新注释,其中包含指向已创建任务的task_id链接。我所能想象的就是肮脏的重复代码

我发现最好的方法是:

  • 创建一个名为“CreatedTaskFromCommentsSection”的事件,并在该事件中(在侦听器中)调用注释恢复以创建链接到任务的新注释
  • 然后使用TaskController->create方法并在请求中传递其他注释信息,并检查($request->comment\u title),然后调用事件

但我认为这真的是糟糕的逻辑。也许我应该用另一个表结构来做这个?如果您有任何建议,我将不胜感激:)

好的,我最终得到了这个解决方案: 创建任务存储库的装饰器,此装饰器添加注释创建。因此,如果任务的create操作中有$request->comment_文本,那么我们就通过decorator创建一个新任务。这是我能创造的最好的解决方案,任何想法或建议都值得赞赏:)