обновление Laravel без передачи ID - PullRequest
0 голосов
/ 28 августа 2018

Я работаю над журналом заявок, в котором билеты редактируются несколько раз, прежде чем они «сделаны».

У меня есть обзор, где вы видите все билеты, в верхней части страницы находятся 6 кнопок. Все кнопки открывают всплывающее окно с формой. Первая кнопка - это функция создания, которая создает заявку и заполняет первую информацию. Все остальные поля теперь NULL. Вторая кнопка - первая кнопка редактирования.

При открытии открывается форма, где пользователь сканирует штрих-код, чтобы заполнить первое поле; Ticket Number. этот номер билета уникален для каждого билета. Следующее, что нужно заполнить, это ваши учетные данные, которые появляются из выпадающего списка.

Из-за того, что все формы редактирования работают по Ticket_number (который сканируется с помощью QR-кода), я сделал так, чтобы все формы находились на одной странице. Поэтому я не могу сделать что-то вроде: action="{{ route('countries.update',$country->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 голосов
/ 28 августа 2018

Я узнал, как это делается.

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

Вы просто должны использовать ::where('column', 'variable').

Переменная была извлечена из моей формы (Номер билета в моем случае. Поскольку это был уникальный идентификатор.), И столбец не требует пояснений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...