Выпадающий список с множественным выбором сохраняет в базе данных только последнее выбранное значение - Laravel - PullRequest
2 голосов
/ 20 июня 2020

Я хочу сохранить в базе данных имена, выбранные в раскрывающемся списке с множественным выбором, разделенные запятыми. С моим кодом он сохраняет только последнее выбранное значение в базе данных.

Blade. php

<div class="form-group">
  <select name="team[]" id="team" class="selectpicker" multiple>
    @foreach ($tdropdown as $tdrop =>$id) 
      <option value="{{$id}}">{{$tdrop}}</option>   
    @endforeach
  </select>
</div>

Controller

public function empstore(Request $request){

   $employee = new employee();
   $employee->team = $request->team;

  $tarray = $request->input('team');
      
foreach ($tarray as $key => $n) {
   $employee->team = $tarray[$key];
   $result = DB::table('teams')->where('id', '=', "$employee->team")->value('name');
    // $employee->team = implode(',', $tarray);
   $employee->team = $result;
    //var_dump($result);
   $employee->save();
}
   //die();
 return redirect()->route('employee.index')->with('success','Data Added');
    
}

Когда я var_dump($result); он выводит все выбранные значения выглядят следующим образом.

string(2) "Team one" string(2) "Team two"

Но приведенный выше код сохраняет только последнее выбранное значение , это означает только «Команда два» в базе данных. Пожалуйста, помогите мне сохранить все выбранные значения в базе данных . Спасибо.

1 Ответ

1 голос
/ 20 июня 2020
$teams = $request->input('team', []);

$employee->team = DB::table('teams')
    ->whereIn('id', $teams) // only find the ids we received
    ->pluck('name') // only get the 'name' column
    ->implode(','); // implode into a comma separated list

$employee->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...