【发布时间】:2015-11-23 22:39:30
【问题描述】:
我正在使用 laravel 5.1 编写一个新项目,我想使用存储库模式,但我不知道最好的方法是什么。
我在想:
public function save(User $user)
{
$user->save();
}
public function find($id)
{
return User::find($id);
}
然后
$user = new User();
$user->email = 'foo@bar.com';
$userRepo->save($user);
这样我使用DTO 的模型,它超级简单和舒适,但是我将依赖 Eloquent。
所以我在考虑使用数组而不是模型,就像这样:
public function save(array $user)
{
User::save($user);
}
public function find($id)
{
return User::find($id)->toArray();
}
但是那样用起来会不太舒服。
你能解释一下在 Laravel 中使用存储库的最佳方式是什么,以便我将来能够轻松更改数据源,但使用这种模式仍然很舒服?
【问题讨论】:
-
如果将逻辑放入模型中,存储库的意义何在?
-
@Federico 我在这个存储库中使用 eloquent,但在实现相同接口的其他存储库中我将使用其他东西,例如文件源,但我仍然可以将模型用作
DTO. -
@Federico 如果不清楚的话,这段代码在存储库文件中,而不是在模型中
标签: php laravel repository repository-pattern repository-design