通常我会在不使用存储库的情况下将逻辑放在服务类中,例如,如下所示:
namespace App\ProjectName\Profile;
use App\User;
class AccountService
{
private $userModel;
public function __construct(User $userModel)
{
$this->userModel = $userModel;
}
public function detail()
{
$user = \Auth::User();
return [
'id' => $user->id,
'name' => $user->name,
'email' => $user->email,
'keys' => $user->keys,
];
}
public function addKey($name, $key)
{
return $this->userModel->keys()->create([
'name' => $name,
'key' => $key
]);
}
}
我在那里看到了一些示例,通过创建存储库类进一步重构。 UserController
输入数据,将其发送到 UserCreatorService
,后者获取 UserRepository
,后者又获取 UserModel
。看起来 UserCreatorService
是 UserRepository
的重复?
最佳答案
您的问题没有明确的答案,因为您使用的模式在很大程度上取决于项目的复杂性和需求。
但是,服务和存储库是两个不同的事物。存储库是模型的通用包装器,是您将查询写入数据库的地方。 IMO 你不应该在这里添加逻辑,存储库的唯一目的是将 os 存储数据抓取到数据库中。 Repositories 的优势在于可以“轻松”切换到其他数据库系统。
服务,IMO,是您添加所有应用程序逻辑的地方。
有关更多信息,请参阅 this answer .
关于php - 当服务类可以做同样的事情时,存储库的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39945840/