php - 如何在 laravel 中显示和编辑相同的刀片?
问题描述
我有一个用户和配置文件表,user_id是配置文件表中的外键和一对一的关系。现在我正在尝试在配置文件刀片的文本字段中显示用户和配置文件的数据。另外,我想通过单击保存更改按钮将编辑数据保存在使用相同的文本字段中。我可以使用显示用户表数据但对显示配置文件数据以及如何编辑用户和配置文件数据感到困惑。如何编辑所有数据?value="{{Auth::user()->mobile}}"
型材刀片
<div class="tab-pane active" id="tab_1_1">
<form role="form" method="POST">
{{ csrf_field() }}
<div class="form-group">
<label class="control-label">Full Name</label>
<input type="text" value="{{Auth::user()->name}}" name="name" class="form-control">
</div>
<div class="form-group">
<label class="control-label">Email</label>
<input type="text" value="{{Auth::user()->email}}" name="email" class="form-control"> </div>
<div class="form-group">
<label class="control-label">Mobile Number</label>
<input type="text" value="{{Auth::user()->mobile}}" name="mobile" class="form-control">
</div>
<div class="form-group">
<label class="control-label">Organization</label>
<input type="text" value="" name="organization" class="form-control">
</div>
<div class="form-group">
<label class="control-label">Department</label>
<input type="text" value="" name="department" class="form-control">
</div>
<div class="form-group">
<label class="control-label">Designation</label>
<input type="text" value="" name="designation" class="form-control">
</div>
<div class="form-group">
<label class="control-label">Address</label>
<textarea class="form-control" rows="3" name="address" value=""></textarea>
</div>
<div class="margiv-top-10">
@if (Auth::user()->id)
<!-- <button type="submit" class="btn btn-primary">Edit</button> -->
<a href="{{route('profileDataUpdate')}}" class="btn default"> Save </a>
@endif
<a href="javascript:;" class="btn default"> Cancel </a>
</div>
</form>
</div>
控制器
public function profileDataUpdate(Request $request)
{
$this->validate($request,[
'user_id'=> '',
'organization' => '',
'department' => '',
'designation' => '',
'address' => '',
]);
$users = new User();
$users->name = $request->name;
$users->email = $request->email;
$users->mobile = $request->mobile;
$users->save();
$profiles = new Profile();
dd($profiles->user_id = $request->user_id);
$profiles->organization = $request->organization;
$profiles->department = $request->department;
$profiles->designation = $request->designation;
$profiles->address = $request->address;
$profiles->save();
return redirect(route('profile'))->with('successMsg','profile Successfully Updated');
}
解决方案
首先,您需要在控制器中获取用户信息,这样您就可以在用户模型中轻松显示相关信息
用户模型
public function profile(){
return $this->hasOne(Profile::class,"user_id","id");
}
在您的控制器中(我们将获取用户信息)
public function showProfile(){
$id = Auth::id();
$user = User::with("profile")->find($id);
return view("profile",compact("user"));
}
视图(因此在您看来,我们可以使用 $user 变量获取配置文件信息)
name: {{$user->name}}
organization: {{$user->profile->organization}}
并更新..您不是在控制器中更新,而是在尝试创建新用户和配置文件。
我假设配置文件信息一开始不存在,所以我们需要使用 updateOrCreate 方法
public function profileDataUpdate(Request $request)
{
// validation stuff here
User::where("id", $request->user_id)
->update([
"name" => $request->name,
"email" => $request->email,
"mobile" => $request->mobile
]);
Profile::updateOrCreate(["user_id" => $request->user_id],[
"organization" => $request->organization,
"department" => $request->department,
"designation" => $request->designation,
"address" => $request->address,
]);
return redirect(route('profile'))->with('successMsg','profile Successfully Updated');
}
推荐阅读
- html - 508/(1)链接必须具有可识别文本,(2)空表格单元格(Axe 插件)的可访问性规则
- php - 表列表是动态的,需要使用多数组的跳过方法
- c# - 通过引用从两个列表中删除对象
- excel-formula - 有没有办法动态地对表格中的对角线求和?
- excel - 如何添加每 250 个单元的循环并偏移数组?
- javascript - 如何通过在所述行中搜索特定值从数组中返回一行
- android - Auth Activity 返回到我的应用程序,而不是系统设置
- sql-server - 使用 ASP.NET Core API 2.1 在 SQL Server 中记录 Elmah 错误
- python - 在 Plotly 中从 DataFrame 列添加多个文本标签
- python - 我们如何在循环中创建 selenium webdriver 对象并在循环结束后关闭窗口?