【问题标题】:How to delete the id of post from database by delete method [closed]如何通过删除方法从数据库中删除帖子的ID [关闭]
【发布时间】:2022-01-22 09:35:43
【问题描述】:

此代码正在删除我的帖子,但新帖子正在新 id 上创建(即我们从 id 2 中删除帖子,新帖子将使用 id 3 发布,但 id 未删除)

public function delete( $id){
$post = Post::find($id);
$post::where('id', $id)->first()->delete();
// $post->destroy($id);
return redirect('home/faqs');}

控制器

Route::get('/post/delete/{id}','PostController@delete')->name('post.delete');

链接

 <a href="{{ route('post.delete', $post->id) }}" class="btn btn-Danger">Delete</a>

【问题讨论】:

  • 这是设计使然。在处理大型数据库时,您不希望在删除时重新编号表以及所有众多子表和相关表,因为它会破坏关系。我不知道有任何数据库会在删除时重置行迭代器。
  • 这能回答你的问题吗? how to reuse deleted primary keys in mysql?

标签: php mysql laravel


【解决方案1】:

这是正确的。删除行时,数据库不会重置主键增量,因为这不是标准数据库的工作方式。

从逻辑上讲,您可以轻松删除 id: 3,然后将自动增量设置回 3,但是如果您有 10 个帖子,而您删除了第 4 个呢?

如果在这种情况下将增量 id 设置回 4,您将能够创建一行,然后遇到重复主键的问题,这只能通过手动设置来解决自动递增到 10 以上。

【讨论】:

    【解决方案2】:

    您好,您可以这样做。

    HTML

    <a onclick="$('#delete_{{ $single->id }}').submit()" class="btn btn-Danger">Delete</a><form id="delete_{{ $single->id }}" action="{{ route('post.destroy', $single->id) }}" method="POST">
    @csrf
    <input type="hidden" name="_method" value="DELETE">
    

    控制器

    public function destroy($id)
    {
        Post::find($id)->delete();
        return redirect('home/faqs')->with(['success'=>'PostDeleted Successfully']);
    }
    

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习。您的代码如何允许重复使用已删除的 ID?
    猜你喜欢
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 2016-03-14
    • 2019-09-16
    • 2015-03-18
    相关资源
    最近更新 更多