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

时间:2019-04-05 20:34:46

标签: php symfony

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

1 个答案:

答案 0 :(得分:1)

存储库文件应包含与返回的数据库数据有关的任何内容,无论是复杂的查询,还是仅用于您将要使用的查询。

实体文件基本上是数据库数据的对象,也称为抽象。这样做是为了无论我们使用哪种类型的数据库,我们都可以将其统一存储,从而使其独立于数据库,因此下面是一个理想的示例。

假设我们有一个同时具有名字和姓氏字段的实体:

    /**
     * @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方法是一种禁止系统。我的猜测是您有一个名为block的数据库列,它是一个很小的int。如果确实如此,我会说它属于该实体。

public function getIsUserBlocked()
{
    // return your column here
}