【问题标题】:Should I use a separate model for user address?我应该为用户地址使用单独的模型吗?
【发布时间】:2021-05-08 20:13:37
【问题描述】:

我有一个注册表单,用户可以在其中输入客户信息和发票/送货地址信息。一个客户/用户可以有多个送货地址和一个发票地址。

我有一个包含客户信息(姓名、用户名、电话和电子邮件)的数据库表和一个包含地址的数据库表。

我有一个模型,我可以在其中插入和选择客户信息(下面的示例代码)。我应该为另一个表中的地址创建一个新模型还是可以使用客户模型?

不应为每个表创建新模型,因为客户和地址之间存在关系,而是在业务对象之后。

这是否意味着我也应该使用我的客户类来管理地址,即使它们位于不同的表中?

/Model/Customer.php

class Customer
{
public function getCustomer($username)
    {
        $query = 'SELECT * FROM customer where username = ?';
        $paramType = 's';
        $paramValue = array(
            $username
        );
        $customerRecord = $this->ds->select($query, $paramType, $paramValue);
        return $customerRecord;
    }
}

【问题讨论】:

  • 您的代码是否只需要处理地址(也无需获取客户)?
  • @El_Vanja 不。我在用户注册时保存地址,并在用户登录时获取用户地址。我需要通过用户获取地址。
  • 好吧,在这种情况下,他们可能不保证自己的模型。您可以将它们设计为 DTO。

标签: php database model-view-controller model


【解决方案1】:

一个客户/用户可以有多个送货地址和一个发票地址。

这样看,我觉得你应该有一个 delivery_addresses 表来存储所有客户 delivery address,然后你可以存储发票地址作为用户表中的列,或者您可以创建另一个名为 invoice_addresses 的表并将它们存储在那里。

这是否意味着我也应该使用我的客户类来管理地址,即使它们位于不同的表中?

您可以在您的 Customer 类中创建一个返回地址的方法。像这样的:

$customerDeliveryAddresses = Customer::find(1)->deliveryAddresses()->get();

你看过Eloquent吗?当您可以使用像 Eloquent 这样非常好的 ORM 库来为您完成所有繁重的工作时,您似乎正在编写原始 SQL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    • 2010-12-14
    • 2010-11-01
    • 2011-09-19
    • 2011-05-03
    • 1970-01-01
    • 2015-08-12
    相关资源
    最近更新 更多