laravel - Laravel - 将数据更新到 2 个相关表中失败
问题描述
在我的 Laravel-5.8 应用程序中,我有两 (2) 个相关模型:
在我的 Laravel-5.8 中,我有这三 (3) 个模型:
身份
class Identity extends Model
{
protected $table = 'identity';
protected $fillable = [
'id',
'name',
];
public function parameter()
{
return $this->hasOne(Parameter::class, 'identity_id');
}
}
范围
class Parameter extends Model
{
protected $table = 'parameters';
protected $primaryKey = 'id';
protected $fillable = [
'activate_goal',
'active_year',
'identity_id',
];
public function identity()
{
return $this->belongsTo('App\Models\Identity','identity_id');
}
}
请求规则:
public function rules()
{
return [
'appraisal_name' => [
'required',
'min:5',
'max:100',
],
'activate_goal' => [
'required',
],
'activate_year' => [
'nullable',
],
];
}
然后跟随控制器:
身份控制器
public function edit($id)
{
$identity = Identity::where('id', $id)->first();
$parameter = Parameter::where('identity_id', $id)->first();
return view('identities.edit')
->with('identity', $identity)
->with('parameter', $parameter);
}
public function update(UpdateIdentityRequest $request, $id)
{
$identity = Identity::find($id);
$identity->name = $request->name;
$identity->save();
$parameter = Parameter::where('identity_id', $id)->fiirst();
$parameter->activate_goal = $request->has('activate_goal');
$parameter->activate_year = $request->has('activate_year');
$parameter->save();
}
然后最后是编辑身份的视图刀片:
<form action="{{route('identities.update', ['id'=>$identity->id])}}" method="post" class="form-horizontal" enctype="multipart/form-data">
{{ csrf_field() }}
<input name="_method" type="hidden" value="PUT">
<div class="card-body">
<div class="form-body">
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label class="control-label text-right col-md-0"> Name<span style="color:red;">*</span></label>
<input type="text" name="appraisal_name" placeholder="Enter appraisal name here" class="form-control" value="{{old('name',$identity->name)}}">
</div>
</div>
</div>
</div>
<div class="card-body">
<div class="form-body">
<div class="row">
<div class="col-12 col-sm-3">
<div class="form-group">
<label class="control-label"> Activate Goal?:<span style="color:red;">*</span></label><br>
<input type="checkbox" name="activate_goal" class="form-control" unchecked data-bootstrap-switch data-off-color="danger" data-on-color="success" data-off-text="NO" data-on-text="YES" @if($parameter->activate_goal == 1) checked @endif value="{{old('activate_goal')}}">
</div>
</div>
<div class="col-12 col-sm-2">
<div class="form-group">
<label class="control-label"> Activate Year?:</label><br>
<input type="checkbox" name="activate_year" class="form-control" unchecked data-bootstrap-switch data-off-color="danger" data-on-color="success" data-off-text="NO" data-on-text="YES" @if($parameter->activate_year == 1) checked @endif value="{{old('activate_year')}}">
</div>
</div>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary">Save</button>
</div>
</form>
Identity 是主表,它在 Parameter 中有它的 identity_id。当 Identity: name, Parameter: activate_goal 和 activate_year 字段被输入时,应用程序从 Identity 中获取 id 并将其更新为 Parameter 表中的 identity_id。
这在插入(创建)中是成功的。但是,但是在更新时我收到了这个错误:
The activate goal is required
但这被选为复选框。
我该如何解决这个问题?
谢谢
解决方案
你的代码有错误
改变这个
$parameter = Parameter::where('identity_id', $id)->fiirst();
至
$parameter = Parameter::where('identity_id', $id)->first();
推荐阅读
- php - PHP col行网格系统
- github - github:通过提交评论关闭问题(不是提交消息)
- python - 将离线 CRM 数据转换为 google 测量协议格式
- python - matplotlib实时图表上的可滚动x?
- mvvm - MVVM“只能在 DependencyObject 的 DependencyProperty 上设置‘绑定’。”
- python - 我需要使用 python 从脚本标签内的网页中提取数据
- javascript - Javascript 解构询问
- oracle - 基于表中两个条目的触发触发器
- storybook - Storybook:如何拥有一个带有选项的“选择”控件以及自由文本?
- c# - PrintPreviewDialog 打印空白页