Laravel注册用户以创建组

时间:2018-07-11 08:45:45

标签: php laravel

我对laravel非常陌生。学习了如何创建带有注释类型的应用程序的模型,控制器,博客文章,并进一步学习了我正在尝试实现的知识:

注册用户并同时为用户创建一个组。 (有一个用户表,一个组表和一个user_group_relations表)

在laravel提供的RegisterUsers.php上:

public function register(Request $request)
{
    $this->validator($request->all())->validate();

    event(new Registered($user = $this->create($request->all())));

    //step 1:make a group with registered user email as group name
    //step 2:make a user_group_relations entry relating user with group

    $this->guard()->login($user);

    return $this->registered($request, $user)
                    ?: redirect($this->redirectPath());
}

最佳做法是什么? 对于第2步,该方法也将需要由其他模型访问,但我仍然不确定如何在各个模型之间共享该方法而不会引起静态函数错误。

您可能会问为什么有user_group_relations表?

我知道大多数人会在模型中使用belongsTohasMany关系方法,或者将user_id json存储在groups表中。该应用程序需要列出用户可能所在的组(用户可以有多个组),这就是为什么我认为使用单独的表来处理关系会更好。

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:0)

尝试类似这样的方法。首先创建用户和组

$user = $this->create($request->all()));
$group = new Group();

取决于您的关系,将其附加到用户

$user->groups->attach($group);

然后触发事件

event(new Registered($user);

答案 1 :(得分:0)

我已经执行了以下操作,并且正在运行,但这是最佳做法吗?

public function register(Request $request)
{
    $this->validator($request->all())->validate();

    $user = $this->create($request->all());

    $group = new Group([
        'owner'         =>  $user->id,
        'group_name'    =>  $user->email,
        'group_info'    =>  null,
        'group_desc'    =>  null,
        'archive'       =>  false
    ]);

    $group->save();

    $usergrouprelationship = new UserGroupRelationship([
        'user'      =>  $user->id,
        'group'     =>  $group->id,
        'archive'   =>  false
    ]);

    $usergrouprelationship->save();

    event(new Registered($user));

    $this->guard()->login($user);

    return $this->registered($request, $user)
                    ?: redirect($this->redirectPath());
}