【问题标题】:Where to put specific logic in a laravel app在 laravel 应用程序中放置特定逻辑的位置
【发布时间】:2014-01-13 15:48:02
【问题描述】:

我正在使用 Laravel 4 构建一个小应用程序,主要用于我自己的学习,其目的是根据他们的付款计算一群人(如室友)之间的欠款。

我对 CakePHP 有一点经验,所以我试图利用我对 MVC 架构的了解来正确地完成这项工作。

这里忽略所有的 Auth、迁移表等是我的数据库架构:

因此,基本上,假设一个“付款人”代表团体付款,payers_payments 中将记录每个付款人的付款金额以及是否包含在付款中 (pays (bool))。 payments 将获得该付款的一般信息。付款总额是与该付款相关的payers_payments.amount 的总和。

在这一点上随时阻止我,告诉我我的数据库设计是垃圾,可以做得更好。

我的理解是“业务逻辑”(从数据库中获取内容)显然会进入模型。

我应该如何构建我的应用程序,以便我可以生成一个“摘要”页面,其中包含所有付款与付款人的声明。我想做这样的东西(用纯php版本制作):

基本上需要进行一些计算才能以这种形式获取数据。他们应该去哪里?对构建应用程序有什么建议吗?假设我有所有基本控制器和模型。

【问题讨论】:

  • 在模型中。任何数据处理,特别是来自数据库的数据处理,都应该在 Model 中进行。
  • 我使用一个服务层来执行这个逻辑,只需添加你自己的逻辑并让 Composer/Laravel 自动加载它。
  • @AnthonySterling 你能详细说明一下吗?如何使用服务层?

标签: php laravel laravel-4


【解决方案1】:

您可以在Eloquent 上定义relationship data model,也可以在模型中处理该数据,但是关于您的表格关系结构,让我们看看您的表格关系,每笔付款都有很多付款人,每个付款人都有很多付款!所以这是Many To Manyrelationship,最后这个表形成了第三个表,使这种关系成为可能payers-payments!那么让我们看看结果吧!

付款人模型

class Payer extends Eloquent {

    public function Payments()
    {
       return $this->belongsToMany('Payments');
    }
}

现在您的付款人模型中有付款,并且可以通过 id 访问付款:

$Payments = Payer::find(1)->Payments;

Eloquent 文档中有很多例子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2013-01-10
    相关资源
    最近更新 更多