为什么我的数据库条目没有通过 Laravel 更新?

问题描述 投票:0回答:1

我正在尝试通过使用 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,但没有成功。

php html mysql laravel laravel-blade
1个回答
0
投票

问题就在这一行,参数之间用点(“.”)分隔,而不是冒号(“,”)

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)]
© www.soinside.com 2019 - 2024. All rights reserved.