[英]Laravel: How to insert multiple data with select2 to mysql database?
[英]Laravel 7 - How to insert multiple data to mysql database
我正在嘗試將數據插入數據庫。 但我不知道如何將多個 select 復選框數據插入 mysql 數據庫。
public function create(Request $request)
{
try {
$id_student = $request->get('id_student');
$consecutive = DB::select('SELECT SUM(idRecord) FROM record GROUP BY idRecord');
$final_consecutive = sprintf("%04d", $consecutive);
foreach($request->select as $data)
{
Records::create($data);
}
return back()->with('success', 'Constancia creada correctamente');
} catch (\Illuminate\Database\QueryException $e) {
$message = $e->getMessage();
if (strpos($message, "Duplicate entry")) {
return back()->with('err', 'Esta constancia ya ha sido creada');
}
if (strpos($message, "1366 Incorrect integer value: '' for column 'idGrupo'")) {
return back()->with('err', 'Debe seleccionar un grupo para poder continuar');
}
return back()->with('err', $message);
}
}
@foreach ($group->students as $student)
<tr>
<td class="align-middle text-center">
<input class="form-control" type="text" name="nombre" value="{{$student->lastName}} {{$student->Names}}" disabled>
</td>
<td class="align-middle text-center">
<input class="form-control form-control-sm" type="text" name="grade" value="{{isset($student->pivot->grade)?$student->pivot->grade:''}}" placeholder="grade" disabled>
</td>
<form action="{{url('/Create/Records')}}" method="POST">
<input class="form-control form-control-sm" type="hidden" name="id_student" value="{{$student->id_student}}" >
<td class="align-middle text-center">
<input id="select" type="checkbox" name="select[]">
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="d-flex justify-content-center">
<button type="submit" class="btn btn-sm btn-outline-success">Save</button>
</div>
我試圖做的是使用 select 復選框,然后在 Controller 中我將它作為數組傳遞到 foreach 循環中,但老實說我認為我離弄清楚它還差得很遠......除此之外,連續的是自動生成的而且我也不知道如何將它傳遞給數組。
順便說一句,我得到這個錯誤:
傳遞給 Illuminate\Database\Eloquent\Builder::create() 的參數 1 必須是數組類型,字符串給定
您應該將數據傳遞給您的 Model,例如:
Records::create(['id_student' => $idStudent, 'consecutive' => $consecutive]);
目前,您正在提供:
Records::create('string');
這不是傳遞數據的正確方法。 這就是為什么會出現錯誤。
Create() 以數組為參數。 當您的 foreach 循環將 $data 值 0 或 1 作為字符串執行時,就會給出錯誤原因。
如果你想在 foreach 循環中創建那么
foreach($request->select as $data)
{
Records::create(['field_name' => $data]);
}
默認情況下,多個 select 復選框將轉換為名稱以 [] 結尾的 assoc 數組作為其鍵,例如您的使用,因此您可以像這樣訪問它:
$select = $_POST['select'];
然后你可以遍歷值這是一個普通的 php 建議使用 laravel 方法,因為它提供更像安全和過濾器,這是一個簡單快速的解決方案。 但是,如果您使用 ajax 提交,則應始終確保參數始終以 [] 結尾,例如您有一個 get 請求,但相同的語法仍然適用於 post 方法:
http://localhost?select[]=1&select[]=2
相同的代碼將在頂部工作,但對於這樣的獲取請求,您將使用:
$select = $_GET['select'];
還沒有嘗試過 laravel 請求 object 但我認為當您使用 Request 實例時正在完成相同的轉換,您也可以嘗試這樣做,只需確保您始終以 [] 結束參數名稱但如果所有復選框的名稱是設置為 select 它將只返回錯誤意味着的單個字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.