我正在嘗試將資料插入資料庫。但我不知道如何將多選復選框資料插入 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("d", $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 hljs-string">">
<input hljs-string">" type="text" name="grade" value="{{isset($student->pivot->grade)?$student->pivot->grade:''}}" placeholder="grade" disabled>
</td>
<form action="{{url('/Create/Records')}}" method="POST">
<input hljs-string">" type="hidden" name="id_student" value="{{$student->id_student}}" >
<td hljs-string">">
<input id="select" type="checkbox" name="select[]">
</td>
</tr>
@endforeach
</tbody>
</table>
<div hljs-string">">
<button type="submit" hljs-string">">Save</button>
</div>
我試圖做的是使用一個選擇復選框,然后在控制器中我將它作為一個陣列傳遞給 foreach 回圈,但老實說,我認為我離弄清楚它還差得很遠......除了連續自動生成而且我也不知道如何將它傳遞給陣列。
順便說一句,我得到了這個錯誤:
傳遞給 Illuminate\Database\Eloquent\Builder::create() 的引數 1 必須是陣列型別,給定字串

uj5u.com熱心網友回復:
您應該將資料傳遞給您的模型,例如:
Records::create(['id_student' => $idStudent, 'consecutive' => $consecutive]);
目前,您提供的內容如下:
Records::create('string');
這不是傳遞資料的正確方法。這就是為什么會出現錯誤。
uj5u.com熱心網友回復:
Create() 以陣列為引數。當您的 foreach 回圈執行 $data 值 0 或 1 作為字串時,會給出錯誤的原因。
如果你想在 foreach 回圈中創建,那么
foreach($request->select as $data)
{
Records::create(['field_name' => $data]);
}
uj5u.com熱心網友回復:
默認情況下,多選復選框將轉換為名稱以 [] 結尾的 assoc 陣列作為其鍵,例如您的 using ,因此您可以像這樣訪問它:
$select = $_POST['select'];
然后你可以遍歷這些值,這是一個普通的 php 建議使用 laravel 方法,因為它提供了更多類似的安全性,并且過濾這個是一個簡單而快速的解決方案。但是,如果您使用 ajax 提交,您應該始終確保引數始終以 [] 結尾,例如您有一個 get 請求,但同樣的語法仍然適用于 post 方法:
http://localhost?select[]=1&select[]=2
相同的代碼將與頂部相同,但對于這樣的獲取請求,您將使用:
$select = $_GET['select'];
還沒有嘗試過 laravel 請求物件,但我認為當您使用 Request 實體時正在完成相同的轉換,您也可以嘗試這樣做,只要確保您始終以 [] 結束引數名稱,但如果所有復選框的名稱是設定為選擇它只會回傳錯誤意味著的單個字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/439551.html
下一篇:今天報告案例查詢php的總數
