Symfony 3 - 组织存储库类和功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony 3 - 组织存储库类和功能相关的知识,希望对你有一定的参考价值。
在我的Symfony 3项目中,我有一些实体和存储库。不幸的是,在存储库文件中,我只能添加get或getAll函数。我想添加例如函数checkBlocked()来检查用户是否被阻止。我应该在哪里添加该功能?要存储库文件还是其他地方?
答案
存储库文件应该包含与返回的数据库数据有关的任何内容,无论是复杂的查询,还是只是一个你将要使用的查询,它应该存在。
Entity文件基本上是数据库数据的对象,也称为抽象。这样做是为了不管我们使用什么类型的数据库,我们都有一种方法来统一存储它,以便它与数据库无关,所以我将在其中放置的完美示例如下。
假设我们有一个同时具有名字和姓氏字段的实体:
/**
* @return mixed
*/
public function getFirstName()
{
return $this->firstName;
}
/**
* @param mixed $firstName
*/
public function setFirstName($firstName): void
{
$this->firstName = $firstName;
}
/**
* @return mixed
*/
public function getLastName()
{
return $this->lastName;
}
/**
* @param mixed $lasttName
*/
public function setLastName($lastName): void
{
$this->lastName = $lastName;
}
但是让我们说我们需要得到他们的全名,输入可能很麻烦
$user->getFirstName() . ' ' . $user->getLastName();
那么为什么不为我们添加一个方法呢?
public function getFullName()
{
return $this->first_name . ' ' . $this->last_name;
}
换句话说,它听起来像你所说的checkBlocked方法是一种禁止系统。我的猜测是你有一个名为blocked的数据库列,这是一个很小的int。如果这实际上就是这种情况,我会说它属于实体。
public function getIsUserBlocked()
{
// return your column here
}
以上是关于Symfony 3 - 组织存储库类和功能的主要内容,如果未能解决你的问题,请参考以下文章
(Symfony 4)如何手动将供应商类添加到容器中,然后注入存储库/服务类?
如何从 ASP.NET Core 3.1 中的存储库类创建确认电子邮件回调