【发布时间】:2018-08-27 06:06:50
【问题描述】:
我目前刚刚开始将一个大型 Yii2 应用程序移植到 Laravel,我正在考虑使用存储库来解决我当前的控制器混乱和模型臃肿的问题。
我查看了大量的存储库示例,但大多数仅涵盖简单的 CRUD。例如,在我当前的应用程序中,用户可以在多个位置创建,并且必须在其他表中使用 5 条相关记录创建,例如,用户必须添加到组中,并且必须根据其角色创建权限记录。
目前,我几乎所有的模型都有一个自定义的 Create 函数,可以在任何地方重复使用。这是我正在谈论的一个非常基本的 Yii2 示例。
在用户模型中创建用户示例:
public static function create(array $attributes, array $group_ids)
{
$user = new User;
$user->attributes = $attributes;
$user->save();
$role = $user->role;
foreach ($role->rolePermissions as $role_permission) {
UserPermission::create($user->id, $role_permission);
}
foreach ($group_ids as $group_id) {
GroupUser::create($user->id, $group_id)
}
if ($role->admin_mode) {
// send welcome email
}
return $user;
}
在这种情况下,将 UserPermission 和 GroupUser 存储库简单地注入我的 UserRepository 是一种好习惯吗?您如何处理在 Repositories 中保存相关记录?
有没有人有任何更高级的将存储库与相关模型一起使用的示例?
【问题讨论】:
-
恕我直言存储库模式是浪费时间;你选择 Laravel 是有原因的,其中很大一部分是 Eloquent……你会从存储库中返回什么纯对象?雄辩的模型?数组? JSON?想一想……
标签: php laravel repository-pattern