【发布时间】:2018-06-01 23:33:48
【问题描述】:
我正在 Laravel 中实现存储库模式,并且对实现有疑问。
例如,我可以使UserRepository 类具有遵循Eloquent 标准的方法:
public function create(array $properties)
{
return $this->entity->create($properties);
}
public function update($id, array $properties)
{
return $this->find($id)->update($properties);
}
public function delete($id)
{
return $this->find($id)->delete();
}
然后将那个存储库注入到我需要对我的用户做某事的地方。
我在这里看到的问题是......例如,当我这样做时,后面会发生什么:
$this->userRepository->authenticatedUser()->posts
如果通过Eloquent 调用posts 关系,这是否违反了存储库模式?
拥有一个“真正的”存储库模式是否意味着要处理通过User 模型加载的所有可能的关系?
【问题讨论】:
-
您不再使用存储库,因此它与您在界面中指定为 authenticatedUser 的返回值有关。
-
在我看来,任何使用“真实”存储库模式和像 Eloquent 这样的活动记录实现的尝试都需要大量复制 eloquent 模型本身。您已经可以从您的代码中看到这一点。我认为真的不值得付出努力
标签: php laravel repository-pattern