Symfony - 一对多,一个活跃

问题描述 投票:0回答:1

我想问一下在 Symfony 中最好的方法是什么。

例如有一个实体User与另一个实体Address的一对多关系。
假设 User 在电子商店中可以有多个送货地址,而只有一个作为预设是活动的,可以选择其他存储的地址。或者“有效地址”被视为账单地址。

没有 Symfony,我可以使用例如存储过程或具有两种可能性的视图。
具有 User 的另一列/属性,持有“活动地址”记录的 ID,或具有 Address 的另一列(例如布尔值)列/属性,说明记录是否为活动记录.然后视图或存储过程可以轻松返回包含 User 数据(包括“活动地址”)的单个记录。这将取决于其他要求,例如如果需要获取所有活动地址的列表,而不需要加入 User 表/实体。

如何根据最佳实践以干净的方式在 Symphony 中实现这一点?

顺便说一句,“一个不那么紧急”的相关问题。 Symfony / Doctrine 是否支持使用存储过程的某些首选方式?例如。当完整的业务逻辑(包括验证、访问权限等)在数据库级别实现并且多个客户端(例如桌面应用程序、Web 应用程序、移动应用程序等)正在使用存储过程而不是在每个客户端中重新实现业务逻辑时

symfony doctrine-orm doctrine one-to-many symfony6
1个回答
0
投票

欢迎来到SO! “最佳实践”问题在这里不受欢迎。通常您想提供一些不起作用的代码并寻求帮助。

您的问题可能有多种解决方案。如果我正在实施一个解决方案,我可能会向

active
实体添加一个布尔值
Address
属性。然后在
User
实体中我会添加一个像

这样的方法
public function getActiveAddress(): Address
{
    $criteria = Criteria::create()
        ->where(Criteria::expr()->eq("active", true))
    ;

    return $this->getAddresses()->matching($criteria);
}
© www.soinside.com 2019 - 2024. All rights reserved.