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 - 组织存储库类和功能的主要内容,如果未能解决你的问题,请参考以下文章

如何将库类或对象传递给片段?

symfony2 createQueryBuilder

(Symfony 4)如何手动将供应商类添加到容器中,然后注入存储库/服务类?

如何从 ASP.NET Core 3.1 中的存储库类创建确认电子邮件回调

错误:预期的已知函数,在 symfony3.4 上得到 'CURDATE' [重复]

Sonata 管理包,如何使用实体存储库类