Laravel : 如何在 select2 中分解和显示多个数据

Laravel : how to explode and showing multiple data in select2

我正在使用 select2,我想在编辑页面中显示来自数据库的多个数据

@foreach( $userLanguages as $userLanguageTitle)
 <option value="{{$user->languages}}">{{$userLanguageTitle}}</option>
@endforeach

但给我看

<select name="languages[]" class="select2 form-control" multiple="multiple" required>                                                                                                                   
<option value="English,Persian,German" >English</option>                                                                                                                
<option value="English,Persian,German" >Persian</option>                                                                                                               
<option value="English,Persian,German" >French</option>                                                                                                                
<option value="English,Persian,German" >German</option>                                                                                                                
<option value="English,Persian,German" >Spanish</option>                                                                                                                
<option value="English,Persian,German" >Turkish</option>                                                                                                   
<option value="English,Persian,German" >Italian</option>
</select>

我想在元素中显示选定的数据 就像下面的例子

<select name="languages[]" class="select2 form-control" multiple="multiple" required>                                                                                                                   
<option value="English" selected >English</option>                                                                                                                
<option value="Persian" selected >Persian</option>                                                                                                               
<option value="French">French</option>                                                                                                                
<option value="German" selected >German</option>                                                                                                                
<option value="Spanish" >Spanish</option>                                                                                                                
<option value="Turkish" >Turkish</option>                                                                                                   
<option value="Italian" >Italian</option>
</select>

型号

public static function getUserlanguages()
{
    return [
        self::ENGLISH => 'English',
        self::PERSIAN => 'Persian',
        self::FRENCH => 'French',
        self::GERMAN => 'German',
        self::SPANISH => 'Spanish',
        self::TURKISH => 'Turkish',
        self::ITALIAN => 'Italian',
    ];
}

控制器

public function edit(Request $request, $id)
{
    $user = User::findOrFail($id);
    $userLanguages = User::getUserlanguages();
    return view('backend.users.edit', compact('user', 'userLanguages',));
}

<option value="{{$user->languages}}">{{$userLanguageTitle}}</option>

由于您编辑了上面的代码,我假设 $user->languages returns 一个 User 的所有 Languages .所以它 returns 是一个集合或一个数组,但 不是 一个单一的语言项目。所以你可以简单地使用 value="{{$userLanguageTitle}}" 来显示语言的名称,或者像这样使用它的键:

@foreach( $userLanguages as $key => $userLanguageTitle)
 <option value="{{$key}}">{{$userLanguageTitle}}</option>
@endforeach

尝试这个,假设 $user->languagesUser 模型中的一个关系并且 languages table

中有列 name
@foreach($userLanguages as $userLanguageTitle)
 <option value="{{$userLanguageTitle}}" {{ (in_array($userLanguageTitle, $user->languages()->pluck('name')->toArray()) ? 'selected' : '') }}>{{$userLanguageTitle}}</option>
@endforeach