我正在构建一个应用程序,其中用户与帐户相关联(例如,多个用户都共享一个帐户),然后是其他实体 - 我们称它们为产品与帐户相关联。产品与帐户相关联,只有与该帐户绑定的用户才能编辑产品。
就我而言,不同之处在于,在同一模型中共享了许多不同的实体。
如果它只是一个(产品)实体,那么在我的 ProductRepository 中有一个方法不会有问题,例如:
public function checkOwnership($id, $account)
{
$count = $this->createQueryBuilder('s')
->select('count(s.id)')
->where('s.account = :acc')
->andWhere('s.id = :id')
->setParameters(array('id' => $id, 'acc' => $account))
->getQuery()
->getSingleScalarResult();
if($count == 0)
throw $this->createNotFoundException('ye..');
return;
}
确保产品的 id 与用户的帐户相关联。
account 参数通过以下方式传递给此函数:
$this->getUser();
在控制器中。
让其他实体可以使用此功能以防止代码重复的最佳方式是什么?(目前)只有 3 个其他实体,所以在每个存储库中都有它不会是世界末日,但我只是想知道是否有一种方法可以创建一个“通用”或全局存储库遵循良好的标准?我肯定想知道。
编辑:
还是我只是完全想多了?我可以在我的“MainBundle”中创建一个“Common”目录,定义一个命名空间并在需要访问该函数的控制器的开头添加一个 use 语句吗?