簡體   English   中英

獲取 controller 中的刪除 id 以刪除 mysql 記錄

[英]Get delete id in controller to delete mysql record

我在 AuthController 中有這個:

public function DelFunc() {

    if(Auth::check() === true) {
        $deleted = DB::delete('delete from funcionarios where id = ?',[$id]);
    }
    return redirect()->route('admin.login');
}

但我收到此錯誤:未定義變量:id

我的視圖中有這個按鈕:

<a href="../admin/delFunc?id={{$empresa->id}}">
    <button class="btn btn-primary">Delete</button>
</a>

我知道我的問題很簡單,但是,如何獲取 AuthController 上的 id 值來刪除這條記錄?

我也有這條路線:

Route::get('/admin/delFunc', [App\Http\Controllers\AuthController::class, 'delFunc'])->name('delFunc');

這里有一堆危險信號:

  • 為什么當它與Funcionario object 一起工作時,它會進入名為AuthController的 controller?
  • 為什么直接數據庫查詢而不是使用 Eloquent 模型?
  • 您不應該通過 GET 方法刪除項目,這是非常危險的。
  • 身份驗證由中間件完成,而不是通過檢查每個 controller 方法。
  • 最后,您的方法還應該有一個更傳統的名稱,例如destroy

路由參數在路由定義中使用“/admin/delete/{func}”等大括號定義,然后綁定到 controller 方法定義中的對象。

所以,把所有這些放在一起,它應該是這樣的:

<?php

use App\Http\Controllers\FuncionarioController;
use Illuminate\Support\Facades\Route;

Route::middleware("auth")->group(function ($router) {
    $router->delete('/funcionario/{func}', [FuncionarioController::class, 'destroy'])
        ->name('funcionario.destroy');
});

然后在您的 controller 中:

<?php

namespace App\Http\Controllers;

use App\Models\Funcionario;

class FuncionarioController extends Controller {

    public function destroy(Funcionario $func)
    {
        $func->delete();
        return redirect()
            ->route('admin.login')
            ->with('success', __('Funcionario deleted'));
    }
}

假設您的值在$id變量中傳遞,您的視圖將如下所示:

<form method="post" action="{{ route("funcionario.destroy", $id) }}">
    @method('DELETE')
    @csrf
    <button type="submit">{{ __("Delete") }}</button>
</form>

而不是[$id]使用[request('id')]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM