我正在尝试通过使用 Laravel 创建的网页上的条目来更新一些数据。它确实通过表单接收数据,但在通过查询完成时它从不更新数据库本身,但当我发送硬编码数据时它确实可以工作。我找不到问题的根源。
这是网页内的表格和表格:
@foreach($results as $result)
<tr>
<td>{{ $loop->index + 1 }}</td>
<td>{{ $result->first_name.' '.$result->last_name }}</td>
<td>{{ $result->street.' '.$result->number.', '.$result->city }}</td>
<td>{{ $result->assigned_to }}</td>
<form method="POST" action="{{ route('assignment_change') }}">
@csrf
@method('PUT')
<td>
<input type='hidden' name='meter_id' class="meter_id" value={{$result->meter_id}}>
<select name='assignment' class='assignment'>
@foreach($employees as $employee)
<option value={{$employee->employee_id}} {{$result->assigned_to == $employee->first_name ? 'selected' : ''}}>{{ $employee->first_name }}</option>
@endforeach
</select>
</td>
<td><button type="submit">Apply changes</button></td>
</tr>
@endforeach
这是web.php文件中的路由:
Route::get('/all_meters_dashboard', [MeterController::class, 'viewAllMeters']);
Route::put('/all_meters_dashboard', [MeterController::class, 'assignment'])->name("assignment_change");
这是控制器文件:
public function assignment(Request $request) {
$meter_id = $request->input('meter_id');
$assignment = $request->input('assignment');
DB::update('UPDATE meter_reader_schedules SET employee_profile_id = ? WHERE meter_id = ?', [intval($assignment). intval($meter_id)]);
// DB::update('UPDATE meter_reader_schedules SET employee_profile_id = 3 WHERE meter_id = 5') - This does update the database;
return redirect('/all_meters_dashboard');
}
`
我尝试向变量添加和删除 intval,但没有成功。
问题就在这一行,参数之间用点(“.”)分隔,而不是冒号(“,”)
DB::update('UPDATE meter_reader_schedules SET employee_profile_id = ? WHERE meter_id = ?', [intval($assignment). intval($meter_id)]);
[intval($assignment). intval($meter_id)]
// ^ This is the problem.
请简单地这样做:
[intval($assignment), intval($meter_id)]