laravel 用户删除时如何重置自动增量?

2024-03-27

我一直在努力寻找一种在 Laravel 4 中重置自动增量值的方法,但似乎至少目前 Laravel 4 中还没有嵌入此功能。 所以我这样做了:

$user = User::find($user_id);

                if ($user)  {
                    if ($user->delete()){

                    DB::statement('ALTER TABLE users AUTO_INCREMENT = '.(count(User::all())+1).';');

                    echo json_encode('User Was Deleted Successfully..');
                    }   
            }

每次我从数据库中删除用户时,我都会将自动增量指针设置为所有用户的数量+1。

如果有人有更好的解决方案请告诉我..


就像其他人回答的那样,当您删除一行时,实际上并不需要将计数器移回原处。不过你可以truncate一张桌子,其中将删除所有表行并重置计数器。

你不能truncate一个表有Foreign Key Constraints应用于其上(truncate不等于delete它只是删除所有行keeping自动递增计数器。)。

因此,在使用时foreign key constrains,MySQL 可能会阻止您截断具有以下内容的表:foreign key constraints应用于它。

您可以执行以下步骤来实现您想要的目的,但请注意,您的数据完整性可能存在风险。我只将它用于我的测试目的.

  1. 编辑DatabaseSeeder类(可在app/database/seeds/DatabaseSeeder.php) 如下:

    <?php
    class DatabaseSeeder extends Seeder {
        /**
        * Run the database seeds.
        *
        * @return void
        */
        public function run()
        {
            Eloquent::unguard();
    
            // Disable Foreign key check for this connection before running seeders
            DB::statement('SET FOREIGN_KEY_CHECKS=0;');
    
            $this->call('UserTableSeeder');
            // ...
    
            // FOREIGN_KEY_CHECKS is supposed to only apply to a single
            // connection and reset itself but I like to explicitly
            // undo what I've done for clarity
            DB::statement('SET FOREIGN_KEY_CHECKS=1;');
        }
    }
    
  2. 现在是 Table Seeder 类(例如,UserTableSeeder在这种情况下,应该创建于app/database/seeds/UserTableSeeder.php)可以调用截断表,如下所示:

    <?php
    class UserTableSeeder extends Seeder {
    
        public function run()
        {
            // Truncate the table.
            DB::table('users')->truncate();
    
    
            // The auto-increment has been reset.
            // Now we can start adding users.
            User::create(
                array(
                    'email' => '[email protected] /cdn-cgi/l/email-protection',
                    'password' => Hash::make('test')
                )
            );
        }
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

laravel 用户删除时如何重置自动增量? 的相关文章

随机推荐

  • PHP 语法高亮[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个PHP 语法高亮引擎可以定制 即我可以提供我的自己的分词器对于新语言 并且可以处理多种语
  • Python - 读取电子表格

    我需要知道的是 我可以让Python读取电子表格 最好是Microsoft Excel 然后解析信息并将其输入到方程中吗 它适用于赛马程序 其中多匹马的信息将位于一个 Excel 电子表格中的不同行或列中 我需要知道是否可以分别对每匹马进行
  • WooCommerce:向购物车中的每个项目添加输入字段

    我一直在尝试向购物车中的每个项目添加一个文本输入字段 并将用户输入提交到产品的元信息 已经2天了 我还没有成功 我的目标是 获取用户对添加到购物车中的每件商品的输入 在订单的元信息中显示该输入 在发送给客户的确认电子邮件中显示该输入 到目前
  • 密码保护数据库

    我使用 Entity Framework Core 1 0 在 C 桌面应用程序中管理 SQLite 数据库 如何使用密码保护数据库 我知道如何使用 NET 类 System Data SQLite 但是如何使用 Entity Framew
  • numpy 的复数问题

    我试图再次翻译一些 matlab 代码 但我遇到了另一个问题 代码本身非常简单 只是 4 节点旋转因子的演示 这是我的尝试 from numpy import from matplotlib import pyplot as plt x z
  • 如何使重定向视图跳转到django中的某个部分

    所以我的模板中有一个部分 div Comments go here div 现在我希望我的 django 重定向功能重定向到此页面并跳转到此 div id return redirect post detail post slug 我该放在
  • “event.layerX 和 event.layerY 在 WebKit 中已损坏并已弃用。”错误

    我刚刚将 Chrome 更新到版本 16 0 912 63 现在使用 jQuery 1 7 1 时出现数百个错误 似乎只要移动鼠标就会触发 event layerX and event layerY are broken and depre
  • 避免与策略模式耦合

    我试图将策略模式应用于特定情况 但遇到了如何避免将每个具体策略耦合到为其提供数据的上下文对象的问题 以下是模式的简化情况 该模式以几种不同的方式发生 但应以类似的方式处理 我们有一个对象Acquisition它提供与特定时间框架相关的数据
  • Visual Studio 2008 HTML 格式 - 它是否有效?

    这是另一个 Visual Studio 2008 HTML 格式问题 我想我要么在臭名昭著的糟糕 VS HTML 格式中发现了一个错误 要么我做错了什么 这就是我正在做的 我通过以下方式删除所有客户端标签 工具 gt 选项 gt 文本编辑器
  • CIImage 范围以像素或点为单位?

    我正在使用 CIImage 虽然我知道它不是线性图像 但它确实保存了一些数据 我的问题是 CIImage 的范围属性是否返回像素或点 根据文档 https developer apple com reference coreimage ci
  • 在包含中使用 $_SERVER['DOCUMENT_ROOT'] 是个好主意吗?

    例如 这是一个好主意吗 require once SERVER DOCUMENT ROOT include php 如果您在同一台服务器上有两个虚拟主机 一个用于实时 一个用于开发 并且具有不同的 Apache DocumentRoots
  • 用于生成和查看 Azure 块 Blob 和 Azure 文件共享的 SAS(共享访问签名)的工具或使用示例

    我正在寻找一个工具或使用示例来生成和查看 Azure Block Blob 和 Azure 文件共享的 SAS 共享访问签名 有很多块 Blob 和容器的示例 但 Azure 文件共享 SAS 示例或工具呢 创造能力Shared Acces
  • 使用 Android NDK 的本机代码的代码覆盖率

    我正在使用 Android NDK r16 为我的 Android 项目构建本机代码 我希望能够获得本机单元测试的代码覆盖率 这可能吗 根据我的研究 Android 中似乎没有默认提供此功能 我们需要在 Clang 中使用自定义编译器 链接
  • 尝试加载瞬态 Web Worker 时出现“Reflect.defineMetadata”错误

    我正在尝试从 Web Worker 内部加载 aurelia 框架 以便将 Worker 装饰为瞬态 这是工人装载机 importScripts jspm packages system js System config defaultJS
  • Alt 标签不显示在浏览器上

    我正在 HTML 中测试我的代码 以确保我已正确完成所有操作 但我似乎无法在浏览器上显示替代文本 我尝试使用最新版本的 Chrome 和 Firefox
  • 将大量文本粘贴到 vim 中很慢?

    以前有人向我展示过如何做到这一点 但我现在不知道它是什么 我知道关于 set paste但这不是问题 Use p or P立即从系统剪贴板粘贴 Vim 必须编译为 clipboard http vimdoc sourceforge net
  • 如何在mysql错误日志中添加日期

    Mysql错误日志旁边只有一个数字和它们的创建时间 我需要对其进行格式化 以便它还包括日期 我该怎么办 130207 2 25 29 Note Plugin FEDERATED is disabled 130207 2 25 29 Inno
  • Facebook 应用程序和选项卡有什么区别?

    我想添加一个指向我的 Facebook 页面的链接 该链接将在我的页面中打开新信息 不是网站 而是来自我的保龄球手使用的评分程序的信息 无论如何 我都不是程序员 而且员工中也没有程序员 我正在努力自学这些东西 首先 我不知道我要添加的内容是
  • 在 OSX Mountain Lion 上安装 PHP 的 mcrypt 扩展

    对于潜在的 n00b 问题提前致歉 我正在尝试在我的 OSX Mountain Lion 计算机上安装 PHP 的 mcrypt 扩展 终端中的以下步骤是我迄今为止为实现 PHP 安装所做的操作 cd path to downloaded
  • laravel 用户删除时如何重置自动增量?

    我一直在努力寻找一种在 Laravel 4 中重置自动增量值的方法 但似乎至少目前 Laravel 4 中还没有嵌入此功能 所以我这样做了 user User find user id if user if user gt delete D