Symfony 3 - 组织存储库类和功能

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

在我的Symfony 3项目中,我有一些实体和存储库。不幸的是,在存储库文件中,我只能添加get或getAll函数。我想添加例如函数checkBlocked()来检查用户是否被阻止。我应该在哪里添加该功能?要存储库文件还是其他地方?

php symfony
1个回答
1
投票

存储库文件应该包含与返回的数据库数据有关的任何内容,无论是复杂的查询,还是只是一个你将要使用的查询,它应该存在。

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
}
© www.soinside.com 2019 - 2024. All rights reserved.