php - laravel,如何使用控制器存储动作级联保存对象
问题描述
我正在开发一个需要多重身份验证的应用程序,我为仪表板使用了 creative-tim 预设(假设 creative-tim 使用“用户”名称将用户存储在仪表板中)我在上面创建了一个管理表它与 User 表具有一对一的关系,并创建了适当的中间件来限制对我的“仅限管理员”视图的访问,并使用 tinker 创建一个管理员并将其链接到测试所有内容。现在的问题是我想通过注册表自动创建与用户的管理员关系,唯一的问题是,我使用的 creative-tim 模板不遵循 laravel 文档,所以我无法理解而且我不知道如何将“管理员”模型链接到创建的“用户”。
这是数据库/模型的一部分: User(id,name,email,email_verified_at,password,rememberToken,timestamps) Admin(id,user_id,role,timestamps)
他们使用的方式是(显然是存储),但他们使用了 UserRequest 和 User Object,我尝试这样做:
$Admin = new Admin();
$Admin->role="Admin";
$Admin->user_id = $model->id;
$Admin->save();
这是我找到的原始功能
public function store(UserRequest $request, User $model)
{
$model->create($request->merge(['password' =>Hash::make($request->get('password'))])->all());
return redirect()->route('user.index')->withStatus(__('User successfully created.'));
}
解决方案
我实际上找到了问题的解决方案(这不是我的首选)所以我正常创建了一个用户并获得了 id,用它来创建一个管理员,验证后完美运行
public function store(UserRequest $request, User $model)
{
//validation parameters
$item = new User();
$item->name = request('name');
$item->email = request('email');
$item->password = Hash::make(request('password'));
$item->save();
$admin = new Admin();
$admin->user_id = $item->id;
$admin->role ="SuperAdmin";
$admin->save();
return redirect()->route('user.index')->withStatus(__('User successfully created.'));
}
推荐阅读
- postgresql - 是否可以使用“生成的列”在 PostgreSQL 中使用“current_timestamp”更新列(自动)?
- javascript - 这个 forEach 循环有什么问题?它不能正常运行
- javascript - Phyton 中的 Dygraph:如何删除标签但仍然在图中使用其值?
- javascript - 将对象值从一个对象数组移动到另一个对象
- javascript - 浏览器 console.log 的高级样式
- c# - Unity3d客户端——Python服务器实时通信
- arrays - 为什么在使用 Slick 时将数组的位置存储在数据库中
- java - GitLab Runner 不同阶段
- flutter - 飞镖/颤振国际化中的序数
- typescript - “字符串”类型的表达式不能用于索引类型