【问题标题】:How to organize two actions: create 2 models and link one to another OR create only one model (depending on the user's choice)如何组织两个动作:创建 2 个模型并将一个模型链接到另一个模型或仅创建一个模型(取决于用户的选择)
【发布时间】:2017-10-17 11:05:48
【问题描述】:

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

  • 评论(task_id、文本)
  • 任务(标题、优先级、类型、描述)

我需要让用户选择如何创建此模型:

  • 自行创建任务
  • 创建一个简单的评论(task_id = null)
  • 创建评论AS任务(不要问为什么,这是我的想法的一部分:))

前两个已经完成,我有单独的控制器和方法。但最后一个有点棘手: 当用户按下“创建评论作为任务”(+他用任务属性填写表单)时,服务器端应该创建一个新任务,然后创建一个带有指向已创建任务的 task_id 链接的新评论。我能想象的只是肮脏的重复代码。

我发现的最好方法:

  • 创建一个名为“CreatedTaskFromCommentsSection”的事件并在那里(在侦听器中)调用评论存储库以创建新评论,链接到任务
  • 然后使用 TaskController->create 方法并在请求中传递附加评论信息并检查 if($request->comment_title) 然后调用事件

但我认为这是非常糟糕的逻辑。也许我应该为此使用另一个表结构?将不胜感激这里的任何建议:)

【问题讨论】:

    标签: php design-patterns laravel-5 architecture


    【解决方案1】:

    好的,我最终得到了这个解决方案: 创建任务存储库的装饰器,该装饰器添加评论创建。所以如果task的create action中有$request->comment_text,那么我们通过decorator创建一个新的task。这是我能创造的最好的解决方案,任何想法或建议仍然值得赞赏:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2016-01-14
      • 2016-02-24
      • 2023-03-30
      相关资源
      最近更新 更多