如何使用 select2 和 Laravel 默认情况下 select 一些多个选项
How to select some multiple options by default using select2 and Laravel
我在数据库中有 tables 如下。
resumes
id name phone
categories
id catName
然后我有一个枢轴table来存储多对多关系
category_resume
category_id resume_id
现在我有一个编辑简历视图,我想在其中显示特定简历的所有存储类别。我正在为 select 个框使用 select2 插件。
到目前为止我已经试过了
<select class="select2" multiple="true">
@foreach($categories as $category)
<option {{$category->id == $resume->categories->category_id ? 'selected':''}}>
{{$category->catName}}
</option>
@endforeach
</select>
不幸的是,这给我一个错误,因为 $resume->categories
是一个集合,我无法像这样访问它 $resume->categories->category_id
。我需要在这里使用foreach。
但我的问题是如何让我的 select 框 select 加载相关类别?
谢谢。
你不能比较 $category->id
和 $resume->categories->category_id
的原因是你说后者会给你一个集合,你真的只需要检查数组中是否存在 $category->id
选定的 ID。
您应该在控制器中创建数组,然后再将其传递给视图;
类似于:
public function show($id)
{
$resume = Resume::findOrFail($id);
$selectedCategories = $resume->categories->pluck('id')->toArray();
return view('resume.view', compact('resume', 'selectedCategories');
}
那么在你看来做;
<select class="select2" multiple="true">
@foreach($categories as $category)
<option {{in_array($category->id, $selectedCategories) ? 'selected':''}}>
{{$category->catName}}
</option>
@endforeach
</select>
此外,在 foreaching 之前检查 $categories
是否为空是明智的。
@if(! empty($categories))
@foreach($categories as $category)
...
@endforeach
@endif
我在数据库中有 tables 如下。
resumes
id name phone
categories
id catName
然后我有一个枢轴table来存储多对多关系
category_resume
category_id resume_id
现在我有一个编辑简历视图,我想在其中显示特定简历的所有存储类别。我正在为 select 个框使用 select2 插件。
到目前为止我已经试过了
<select class="select2" multiple="true">
@foreach($categories as $category)
<option {{$category->id == $resume->categories->category_id ? 'selected':''}}>
{{$category->catName}}
</option>
@endforeach
</select>
不幸的是,这给我一个错误,因为 $resume->categories
是一个集合,我无法像这样访问它 $resume->categories->category_id
。我需要在这里使用foreach。
但我的问题是如何让我的 select 框 select 加载相关类别?
谢谢。
你不能比较 $category->id
和 $resume->categories->category_id
的原因是你说后者会给你一个集合,你真的只需要检查数组中是否存在 $category->id
选定的 ID。
您应该在控制器中创建数组,然后再将其传递给视图;
类似于:
public function show($id)
{
$resume = Resume::findOrFail($id);
$selectedCategories = $resume->categories->pluck('id')->toArray();
return view('resume.view', compact('resume', 'selectedCategories');
}
那么在你看来做;
<select class="select2" multiple="true">
@foreach($categories as $category)
<option {{in_array($category->id, $selectedCategories) ? 'selected':''}}>
{{$category->catName}}
</option>
@endforeach
</select>
此外,在 foreaching 之前检查 $categories
是否为空是明智的。
@if(! empty($categories))
@foreach($categories as $category)
...
@endforeach
@endif