【发布时间】:2019-11-21 20:09:13
【问题描述】:
我正在开发一个 laravel 应用程序。在 laravel 中,我试图从数据透视表中更新一行。在这个应用程序中,我有三个表:
问题: id、标题、描述
类别: id、名称
category_issues:(数据透视表) id, issue_id, category_id
在 laravel 中,我试图从数据透视表中更新一行。我有这种关系:
问题.php
公共函数类别(){
返回 $this->belongsToMany('App\Category', 'category_issues');
}
Category.php
公共功能问题(){
return $this->belongsToMany('App\Issue', 'category_issues');
}
一个问题可以有很多类别。
显示类别部分的HTML代码:
<div class="form-group row">
<label for="category" class="col-md-4 col-form-label text-md-right">{{ __('Category :') }}</label>
<div class="form-check col-md-6">
@foreach ($categories as $category)
<input type="checkbox" name="category[]" id="{{ $category->id }}" value="{{ $category->id }}"
{{ in_array($category->id, $issue->categories->pluck('id')->toArray()) ? 'checked' : '' }}>
<label for="{{ $category->id }}"> {{ $category->name }} </label>
@endforeach
</div>
</div>
这里是更新函数文件:
public function update(Issue $issue)
{
request()->validate([
'title'=> ['required', 'min:3'],
'description'=> ['required', 'min:3'],
'category' => ['required']
]);
$issue->title = request('title');
$issue->description = request('description');
$issue->save();
//Category_Issue Update
$categoryIssue = new CategoryIssue;
$cats = request('category');
foreach ($cats as $cat) {
$categoryIssue->updateOrCreate([
'issue_id'=> $issue->id,
'category_id' => $cat
]);
}
return redirect('issues')->with('success', 'Issue has been updated');
}
【问题讨论】: