【问题标题】:Where do I put "extra" default fields for a Laravel model?我在哪里放置 Laravel 模型的“额外”默认字段?
【发布时间】:2021-11-06 09:22:56
【问题描述】:

这个问题是关于“正确”的设计模式,而不是功能代码。我想坚持最佳实践并在 Laravel 中使用正确的功能。

我有一个名为Order 的模型,其中包含用户的产品订单。

Order 有几列,比如产品、数量等,并存储在 mysql 中,并带有对 User 模型的 belongsTo() 调用。

当我使用 OrderController 下订单时,我调用了一个使用 Service 类设置的外部 API。

这是问题的主要部分:

我需要添加 API 需要的某些字段,但在我的最终总是相同,所以我将这些打包到自己的对象中并附加它是有意义的在提交之前反对我的订单数据的末尾。

那么,放置这些额外数据的“最佳”位置在哪里?在我的模型中?在服务类中?我倾向于服务类,但这感觉不对。

【问题讨论】:

  • 在配置文件中?
  • 也许吧。但这更像是用户生成的数据。感觉不像是配置
  • 好的,控制器类中的私有常量怎么样?

标签: laravel lumen


【解决方案1】:

您有一个动作,它给出了一个模型或模型的集合。因此,向这些结果添加一些额外数据的最佳做法是使用 JsonResource 和 ResourceCollection。通过使用它们,您可以轻松地在 ToArray 方法中添加您想要的任何内容。 Lumen 默认没有 Illuminate\Http,但您可以将其添加到您的项目中。
Official Http package of laravel
Eloquent: API Resources 文档。

【讨论】:

  • 正是我想要找到的。谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-04
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 2017-07-21
相关资源
最近更新 更多