laravel更新而未传递ID

时间:2018-08-28 11:27:57

标签: php laravel controller

我正在处理票证日志,其中的票证在“完成”之前要进行多次编辑。

我有一个概述,您可以在其中看到所有票证,页面顶部是6个按钮。所有按钮都会打开带有表单的弹出窗口。第一个按钮是一个创建功能,它可以制作票证并填写第一信息。现在,所有其他字段均为NULL。第二个按钮是第一个编辑按钮。

打开后会打开一个表单,用户可以在其中扫描条形码以填写第一个字段; Ticket Number。该票证编号对于每个票证都是唯一的。接下来要填写的是您的凭据,该凭据来自下拉列表。

由于所有编辑表单均按Ticket_number(可从QR码扫描)进行工作,因此我将所有表单都放在同一页面上。因此,我目前无法执行action="{{ route('countries.update',$country->id) }}之类的操作,因为我目前不知道ID。

这是所有内容背后的代码(您也可以看到我在这里尝试过的内容):

web.php:

 //    TICKET LOG ROUTES
 Route::post('ticket/start-picking', 'TicketController@startpicking')->name('tickets.startpicking');
 Route::resource('tickets', 'TicketController');

编辑表格:

<div id="modal-start-picking" class="modal">
    <form method="POST" id="modal-start-picking-form" action="{{ route('tickets.startpicking') }}">
        @csrf
        <input type="text" value="modal-start-picking" name="type" hidden>
        <div class="modal-content">
            <h4>Start Picking</h4>
            <p>Scan Ticket Number here</p>
            <div class="input-field">
                <label for="start">Ticket Number</label>
                <input type="text" name="ticket_number" id="start" autofocus>
            </div>
            <div class="input-field">
                <select id="picker" name="picker">
                    <option value="" disabled selected>Choose a Picker</option>
                    @foreach($employees as $employee)
                        <option {{(old('picker') == $employee->initials ) ? 'selected' : ''}} value="{{ $employee->initials }}">{{ $employee->initials }}</option>
                    @endforeach
                </select>
            </div>
        </div>
        <div class="modal-footer">
            <input class="btn-flat" type="submit" value="Start Picking">
        </div>
    </form>
</div>

TicketController中的功能:

public function startpicking(Request $request, Ticket $ticket)
{
    $request->validate([
        'picker' => 'required',
    ]);

    $ticket->update(array_merge($request->all(), ['picker_start_time' => Carbon::now()]));
    return redirect()->route('tickets.index')->with('toast', 'Ticket updated successfully');
}

如果需要更多信息,我会很乐意更新我的帖子。

1 个答案:

答案 0 :(得分:0)

我发现它是怎么做的。

$request->validate([
    'picker' => 'required',
]);
Ticket::where('ticket_number', $posted_ticket_number)->update([
    'picker'            => $request->picker,
    'picker_start_time' => Carbon::now(),
]);

您只需要使用::where('column', 'variable')

该变量是从我的表单中提取的(在我的情况下,这是票号。因为这是唯一的标识符。),该列不言自明。