Ресурс Laravel Route не удаляет данные таблицы? - PullRequest
0 голосов
/ 04 января 2019

работа с Laravel 5.6 и Mysql.и нужно удалить данные таблицы, используя следующие данные.

<td><a class="button is-outlined" href="/student/{{$student->id}}/delete">Delete</a></td>

и функция удаления контроллера -

public function delete($id)
    {
         DB::table('students')
            ->where('id', $id)

            ->delete();

        return redirect()->back();
    }

, а маршрут такой:

Route::resource('student','StudentController');

, но когданажмите кнопку "Удалить", она генерируется после сообщения об ошибке, (1/1) NotFoundHttpException

как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Если вы используете Resource Controller, вы можете попробовать это.Вы также можете попытаться УДАЛИТЬ, используя AJAX Call.

<td><a class="button is-outlined" id="delete-record">Delete</a></td>

DELETE глагол автоматически вызовет действие destroy из вашего Resource Controller.

public function destroy($id)
{
    $deleted = DB::table('students')
                 ->where('id', $id)
                 ->delete();
    // return number of deleted records             
    return $deleted;
}

И для выполнения УДАЛИТЬAJAX-вызов как этот

0 голосов
/ 04 января 2019

Если вы используете контроллер ресурсов, вы не можете сгенерировать ссылку для метода DELETE .

Кстати, это не delete метод, а destroy метод и ссылка.

DELETE метод ожидает, что запрос будет иметь DELETE *Заголовок 1012 * (например, POST, GET или PUT).

Самый простой способ - определить URL для вас delete метод:

Route::get('student/{site}/delete', ['as' => 'student.delete', 'uses' => 'StudentController@delete']);

Или вы должны использовать такую ​​форму, как этадля вызова УДАЛИТЬ заголовок:

<form action="{{ route('student.destroy', $studentId) }}" method="POST">
    @method('DELETE')
    @csrf
    <button>Delete</button>
</form>

И вам нужно изменить название вашего метода:

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