如何使用 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