Eloquent 模型中的 UUID 主键存储为 uuid 但返回为 0

2024-06-19

我有一个 mysql 表,其中使用 UUID 作为主键。这是创建迁移:

Schema::create('people', function (Blueprint $table) {
    $table->uuid('id');
    $table->primary('id');
    ...
    $table->timestamps();
}

它生成以下 MySQL 架构:

CREATE TABLE `people` (
  `id` char(36) COLLATE utf8_unicode_ci NOT NULL,
  ...
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

在我的 Eloquent 模型中,我有一个创建实例的方法,该实例调用一个生成 UUID 的方法:

class Person extends Model
{
    protected $fillable = [
        ...
    ];

    public function make(array $personData){
        $person = new Person;
        $person->setUUID();
        collect($personData)->each(function ($value, $columnName) use($person){
            if(in_array($columnName, $this->fillable)){
                $person->{$columnName} = $value;
            }
        });
        $person->save();
        return $person;
    }

    protected function setUUID(){
        $this->id = preg_replace('/\./', '', uniqid('bpm', true));
    }

}

当我创建一个新的模型实例时,它将它很好地存储在数据库中:

但是当我尝试访问新实例的 id 时:

它返回 0:

我在这里缺少什么?


没关系,我在搜索文档后找到了答案:https://laravel.com/docs/5.2/eloquent#eloquent-model-conventions https://laravel.com/docs/5.2/eloquent#eloquent-model-conventions

在“主键”部分下有一个小简介:

另外,Eloquent 假设主键是一个递增的整数值。如果您希望使用非递增主键,则必须将模型上的 $incrementing 属性设置为 false。

如果您要使用 UUID,则必须将此属性设置为 false。一旦我在模型的顶部做到了这一点,它就起作用了。

由于我的所有模型都将使用 UUID,因此我将 UUID 逻辑提取到父类中。它看起来是这样的:

class UuidModel extends Model
{

    public $incrementing = false;

    /**
     * Sets the UUID value for the primary key field.
     */
    protected function setUUID()
    {
        $this->id = preg_replace('/\./', '', uniqid('bpm', true));
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eloquent 模型中的 UUID 主键存储为 uuid 但返回为 0 的相关文章

  • 如何从 Laravel 中的表中选择所有列名称?

    我试图从表中获取所有列名Teller 功能 public function getTableColumns tables return DB select DB raw SELECT COLUMN NAME DATA TYPE COLUMN
  • Laravel 验证 如果勾选复选框,则需要输入文本?

    我一直在阅读 Laravel 验证文档 我不清楚如何结合两个规则 例如
  • Android 中多个蓝牙连接的自定义 UUID

    我有一个 Android 设备作为服务器连接到多个蓝牙 Android 客户端 我了解 UUID 的概念以及它的独特之处 我的问题是 我可以为连接到我的服务器的所有客户端使用相同的 UUID 吗 如果没有 我如何以编程方式为我的客户端生成
  • 第一个选项为空的选择框

    如何将选择框中的第一个选项设置为空值 我正在从数据库获取数据 我想将选项默认设置为 请选择一个选项 我找到 default gt Please select 不适用于 HTML5 必需属性 这确实有效 listOfValues 1 gt C
  • Laravel + AngularJS Nginx 路由

    我有以下问题 我需要配置Nginx 这样在任何URL用户访问时 它都会保留uri 例如domain com some url 但仅传递给 laravel 并让 Angular 处理路由 Route get function return v
  • 显示产品中的类别名称和类别 ID - Laravel

    我已经找到了这个答案 但它对我不起作用 Laravel 按 id 显示类别 https stackoverflow com questions 39222584 laravel displaying categories by id 我无法
  • 将两个 laravel AJAX 函数合并到一条路径中

    我正在尝试将数据插入数据库 并且我的两个功能都可以工作 但是当我尝试缩短它并放入一些常见内容时 它就无法工作 我认为问题出在我的第一个函数中 我正在使用图像 并且对于该 contentType 所有细节都不同 这就是它不起作用的原因 这是我
  • 如何在 Laravel 5 中设置基本路径

    I moved Laravel 公共文件夹 to the 根文件夹 然后我搬家了Laravel to 它自己的文件夹 所以我可以在共享主机上使用 Laravel 它看起来像这样 2015 08 04 18 13
  • 控制器中的 Lumen (laravel) 翻译

    我需要翻译 电子邮件 作业和控制器中使用的字符串 我读到了这个 https laravel com docs 5 2 localization https laravel com docs 5 2 localization所以我知道你可以通
  • 获取 OrderBy desc Eloquent 查询中的行排名,如何使此查询在 laravel 5.5 eloquents 中工作?)

    我试图为我的用户提供 Laravel hiscores 分页表的排名 这是我发现有效的 MySQL 查询 我试图将其作为 Laravel 雄辩的查询来工作 select i i 1 ranking t from select i 0 ini
  • Laravel 4:处理种子中的关系

    L4 的新种子功能中是否有一种简单的方法来管理多对多关系 一种方法是为数据透视表制作种子 但我需要做很多工作 对于此类事情的良好工作流程有什么想法吗 在最新版本的 Laravel 4 中 您可以在 DatabaseSeeder 类的 run
  • Laravel 作业/通知失败

    我正在尝试在我的网站上设置一个联系表单 当有人单击 发送 时 就会运行一个作业 并在该作业中向所有管理员用户发送通知 不过 我在失败的作业表中不断收到此错误 Illuminate Database Eloquent ModelNotFoun
  • 当 Axios 中的 responseType 为 blob 和 VueJs 时,如何读取 http 错误? [复制]

    这个问题在这里已经有答案了 我在 VueJS 应用程序中使用 Blob responseType 和 Axios 从服务器下载文档 当响应代码为 200 时 它工作正常并下载文件 但是当出现任何 http 错误时 我在捕获错误时无法读取状态
  • Laravel Forge + DigitalOcean - 添加仅对目录具有受限访问权限的 SFTP 用户

    我在 DigitalOcean Droplet 中使用 Laravel Forge 我需要向我的一个客户端授予对服务器上特定目录的 SFTP 访问权限 他只需要对该目录的读 写访问权限 而我的设置遇到问题 我已按照以下步骤操作https b
  • 如何在 Laravel 中的 get() 之后对集合进行分页?

    我对两个查询结果进行了合并 效果很好 events1 App Event Where valid to gt today gt orderByRaw valid to ASC gt get events2 App Event Where v
  • 在 Laravel 4 中使用 Cookie

    在 Laravel 4 中如何使用 cookie 我确信这很简单 但我有些不适应 但我需要一点帮助 据我所知 你必须创建一个像这样的cookie cookie Cookie make test cookie test data 30 那么
  • 无法访问 Twig 上的 Eloquent 属性

    我试图在 Slim 中使用 Twig 访问 Eloquent 属性 但出现错误 我有一个Field和一个Type对象 关系如下 class Field extends Illuminate Database Eloquent Model p
  • Laravel 5.4 邮件,传递数据

    我正在尝试使用 Laravel 5 4 中的简单联系表单向自己发送一封电子邮件 我的表单有 4 个输入 Nom prenom 电子邮件和消息 我只想发送一封包含邮件模板中数据的电子邮件 这是我的控制器 this gt validate re
  • laravel services.json 未创建

    有时我的services json运行后丢失composer update or php artisan clear compiled 我检查了权限 甚至将存储文件夹的权限更改为 777 但没有帮助 我怎样才能调试出什么问题 我的 lara
  • 使用 axios get 请求发送对象[重复]

    这个问题在这里已经有答案了 我想发送一个带有对象的获取请求 对象数据将在服务器上用于更新会话数据 但该对象似乎没有正确发送 因为如果我尝试将其发送回去打印出来 我只会得到 N 我可以像这样使用 jQuery 来完成它 它可以工作 get m

随机推荐

  • 如何使用“index_mut”来获取可变引用?

    即使当我实施IndexMut对于我的结构 我无法获得对结构内部向量元素的可变引用 use std ops Index IndexMut struct Test
  • 模板策略模式

    我想分解一个类 使其与执行某些任务的逻辑分离 以便用户可以按照自己的意愿编写新策略 而不会干扰中心模型 因此 我想使用模板化策略类 但不必让策略的用户被模板化 class Model boost shared ptr lt Strategy
  • 如何覆盖flask-security的登录?

    我想在用户登录时进行一些自定义 问题是该项目正在使用flask security 它隐式处理用户登录 我想在用户登录时检查数据库中用户的一些记录 如何覆盖烧瓶安全中的 登录 功能 I saw a 类似的帖子 https stackoverf
  • 从子域重定向到域+ .htaccess

    我可以为多个域配置 RewriteRule 吗 就像我的要求是 我当前的域名 www maindomain com 假设我有三个域和子域 子域网址是 example1 maindomain com example2 maindomain c
  • 如何在 Moderngl EGL 后端添加深度缓冲区?

    此代码渲染一个带有抗锯齿功能的彩色三角形 samples 8 当深度缓冲线depth attachment ctx depth texture 512 512 samples 8 被评论 但是当我添加深度缓冲区时 它会在绑定处返回 GL 错
  • 使用图表时避免使用“激活”和“选择”(Excel)

    我知道使用Activate and Select在 Excel 中 VBA 不是最佳实践 我看过有关如何在处理范围时避免它们的参考资料 例如 LINK https stackoverflow com questions 10714251 e
  • 使用 Scala 进行网页抓取 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JavaScript 跨浏览器单击 HTML DOM 元素

    是否有可用的普通 JavaScript 跨浏览器函数能够触发 HTML DOM 元素 包括 div 等非表单元素 上的单击事件 大多数走这条路的人要么最终开发自己的事件管理系统 这并不难 但很烦人 要么在可用的功能范围内工作 如果所有浏览器
  • 如何创建在特定范围内开始和结束的条形图

    我创建了一个计算机模型 只是为了好玩 来预测足球比赛结果 我进行了计算机模拟来预测一支球队将获得多少分 我得到了每个团队的模拟结果列表 我想绘制诸如置信区间之类的东西 但使用条形图 我考虑了以下选择 我考虑过使用 matplotlib 的烛
  • 如何删除 Apache Kafka 中的多个主题

    假设我有许多具有相同前缀的主题 例如 giorgos topic1 giorgos topic2 giorgos topic3 用于删除单个主题的命令 例如giorgos topic1 如下 bin kafka topics sh zook
  • Postgresql 一张表的多个计数

    我想从表中的两列中获得这些列中值的统一计数 例如 两列是 表 报告 type place one home two school three work four cafe five friends six mall one work one
  • 何时/为何使用/定义接口[重复]

    这个问题在这里已经有答案了 可能的重复 何时最好使用 java 中的接口 https stackoverflow com questions 2586389 when best to use an interface in java Hi
  • 视图绑定对应用程序大小的影响有多大?

    View Binding 按照文档的规定 为每个XML元素生成一个Binding类 以方便访问和检查 并减轻如下的时间负担 findViewById 虽然findViewById通过更昂贵的关联搜索进行操作 由于映射 绑定应该 直接 访问
  • 如何设置引导开关的 css 颜色?

    如何在此引导开关中将蓝色更改为另一种颜色 我尝试更改输入元素的颜色和背景颜色 但它没有更改开关颜色 这是 html 和 bootstraplink https getbootstrap com docs 4 2 components for
  • 计算从给定日期开始的月份中的第几天?

    我正在努力寻找一种简单有效的解决方案来计算每月的工作日 例如 如果给定日期是第一个星期一Monday 5th March 2018然后我想获取接下来 6 个月每个月第一个星期一的日期 例如 Monday 2nd April 2018 and
  • 如何从 SOAP 响应中删除额外的结果标签

    我知道这个问题以前曾被问过 但我在任何地方都找不到答案 问题是我的 asmx 文件中有以下代码 namespace IrancellSmsServer SoapDocumentService RoutingStyle SoapService
  • Java-线程与CPU的关系

    我对多线程还很陌生 我正在开发一个项目 尝试在我的 Java 程序中使用 4 个 CPU 我想做类似的事情 int numProcessors Runtime getRuntime availableProcessors ExecutorS
  • URL 路由中的点与命名空间 Rails 3.1

    我有这个路线 rb root to gt posts index devise for users controllers gt omniauth callbacks gt users omniauth callbacks resource
  • Pandas.read_excel 有时会错误地将布尔值读取为 1/0

    我需要将一个非常大的 Excel 文件读入 DataFrame 中 该文件包含字符串 整数 浮点和布尔数据 以及丢失的数据和完全空的行 还值得注意的是 某些单元格值源自单元格公式和 或 VBA 尽管理论上这不会影响任何内容 正如标题所示 p
  • Eloquent 模型中的 UUID 主键存储为 uuid 但返回为 0

    我有一个 mysql 表 其中使用 UUID 作为主键 这是创建迁移 Schema create people function Blueprint table table gt uuid id table gt primary id ta