1

我有一个实体,我为它创建了两个 setAttribute 函数:

public function setStartAttribute($value) { }

public function setEndAttribute($value) { }

这些属性startend都是日期时间,我在允许之前检查了每个 setter 函数中的一些标准。在某些情况下,我会阻止或允许更新开始结束属性。

但是,我碰壁了,因为如果我阻止其中一个被更新,我需要同时阻止这两个。换句话说,如果用户尝试使用超出范围的开始日期更新实体,我需要阻止开始日期被更新,但我还需要阻止结束日期被更新。

由于这是两个独立的功能,我不确定在这种情况下如何使用一个来防止另一个。

编辑:

由于答案非常明显(只需在一个函数中执行此操作)而无需添加此额外信息,因此我将补充一点,使这变得不那么简单的部分是我正在使用 Backpack for Laravel。Backpack 管理面板中的 CRUD 允许我创建或更新我的实体。我正在使用 date_range 字段类型来允许在我的实体上设置开始结束时间/日期。保存它后,我需要能够通过开始结束值到函数并验证它们,然后再将它们设置在我的实体上。我发现在 setStartAttribute() 和 setEndAttribute() 之上创建两个单独的函数允许我验证这些值并选择是否将它们分配给实体,但是我需要能够使用一个统一的函数而不是两个单独的函数。正是这种与 Backpack 的集成让这个问题对我来说变得不那么简单了。

4

1 回答 1

1

如果这些startend属性以某种方式连接(如果另一个无效,则无法设置),您最好使用一种方法来设置它们。像这样的东西:

public function setStartAndEnd($start, $end)
{
    if ($start is valid && $end is valid)
    {
        $this->start = $start;
        $this->end = $end;
    }
}

您可以按如下方式使用:

$entity->setStartAndEnd($date, $another_date);
于 2017-06-27T07:44:12.213 回答