php Laravel无法从DB中删除记录

pkln4tw6  于 2023-05-05  发布在  PHP
关注(0)|答案(4)|浏览(151)

我为“CRUD”方法做了控制器来控制数据库。一切正常,我可以创建,更新和查看任何记录,但当我试图删除(销毁)记录时,它无法删除该特定记录。

public function destroy(blogs $blogs)
    {
        $blogs->delete();
        return redirect()->route('post.index')
        ->with('success','success create blog');

    }
<table class="table table-striped
    table-hover 
    table-borderless
    table-primary
    align-middle">
        <thead class="table-light">
            <caption>Table Name</caption>
            <tr>
                <th>No</th>
                <th>Post name</th>
                <th>details</th>
                <th>Image Name</th>
                <th>Action</th>
            </tr>
            </thead>
            <tbody class="table-group-divider">
                @foreach ($data as $item)
                <tr class="table-primary" >
                    <td scope="row">{{$item->id}}</td>
                    <td>{{$item->name}}</td>
                    <td>{{$item->description}}</td>
                    <td ><img style="width:10%" src="/images/{{$item->img}}" alt="" srcset=""></td>
                    <td>
                        <form action="{{route('post.destroy',$item->id)}} " method="post">
                        @csrf
                        @method('DELETE')
                        <button type="submit" class='btn btn-danger'>delete</button>
                        </form>
                        <a href="{{route('post.edit',$item->id)}}" class="btn btn-primary">Edit</a>
                        <a href="{{route('post.show',$item->id)}}" class="btn btn-info">Show</a>
                    </td>
                </tr>
                @endforeach
               
            </tbody>
            <tfoot>
                
            </tfoot>
    </table> 
        {!! $data->links() !!}
   </div>

我已经检查了数据库用户权限,但它仍然是一样的。

xxls0lw8

xxls0lw81#

只需在控制器方法中将$blogs更改为$blog

public function destroy(Blogs $blog)
{
    $blog->delete();
    return redirect()->route('post.index')
    ->with('success','Deleted');

}

同时检查型号名称;destroy(Blogs $blog)-〉first(Blogs)应该是您的模型名称。

vdgimpew

vdgimpew2#

1.你必须检查你的路由和流,我发现它是错误的,就像你想删除博客,但调用post.destroy方法,你必须检查你正在工作的资源(博客或帖子)。最佳实践=〉让事情变得简单,并在命名约定上下功夫。
1.你必须使用你的模型,应该是'博客'而不是'博客',检查你的模型名称,并相应地导入你的模型。

  1. https://laravel.com/docs/10.x/controllers#resource-controllers,请阅读一次。
    1.首先确保你的Model绑定工作正常,使用dd($blog)检查它,如果它显示了你的数据,那么就可以了。
    1.如果Model绑定无法正常工作,并且您没有使用Route::resource('blogs',Your controller);然后在路由中使用id,如
Route::delete('/blogs/{id}',  [BlogController::class, 'destroy'])->name('blogs.destroy');

然后在控制器的destroy方法中:

public function destroy(int $id)
    {
        $blog = Blog::query()->findOrFail($id);
        $blog->delete();
        return redirect()->route('blogs.index')
        ->with('success','success create blog');

    }
yeotifhr

yeotifhr3#

你必须先从博客表中找到记录,然后删除记录。

public function destroy($id)<br>
{

   $blogs = blogs::find($id);<br>
   $blogs->delete();

   return redirect()->route('post.index')
   ->with('success','success create blog');

}
5vf7fwbs

5vf7fwbs4#

你应该做:

public function destroy(int $id)
{
   $blog = Blog::find($id);
   $blog->delete();
   return redirect()->route('blogs.index')
        ->with('success','success create blog');

}

相关问题