Laravel包括更新后与模型的关系

时间:2017-04-26 01:26:49

标签: php laravel eloquent

我正在使用一个角色包,它在我的数据库中存储了很多关系数据。所以有一个users表和一个带有外键的user_roles表......等等......

我正在使用以下代码更新模型:

    $user = User::findOrFail($id);
    $user->update(request()->all());
    $user->syncRoles(request()->input('roles', []));

我有什么方法可以在roles变量上保留$user的引用,以便在这些代码行运行后可以使用它们吗?

我问,因为我之后使用的是日志记录系统:

    activity()->on($user)->by(auth()->user())->withProperties([
        'user' => $user,
        'roles' => request()->input('roles'),
    ])->log('Updated User');

我想简要介绍一下:

    activity()->on($user)->by(auth()->user())->withProperties($user)->log('Updated User');

3 个答案:

答案 0 :(得分:1)

您需要刷新数据库中的模型数据。 E.g。

$user = $user->fresh('roles');

答案 1 :(得分:0)

例如使用延迟加载:

$user = User::findOrFail($id);
$roles = $user->roles;

在您的User模型上,您将为角色表创建HasMany关系。

渴望加载:

$user = User::with('roles')->findOrFail($id);

答案 2 :(得分:0)

在User.php模型中添加关系:

public function roles(){
    return $this->hasMany(Role::class);
}

现在只需在代码中调用它即可获得如下角色:

$aUser = User::with('roles')->find($id);
$roles = $aUser->roles;