php - Laravel:队列作业表修改字段问题

标签 php mysql laravel

所以基本上我需要将 laravel 创建的作业的 id 类型和失败的作业迁移更改为 uuid,但它向我显示了此错误。

SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column \"id\" violates not-null constraint.

我正在使用队列数据库驱动程序。

我尝试更改框架文件中的模型并且工作得不错,但这就像我的关键核解决方案。

如果你能想到更好更优化的解决方案请疯狂。

提前致谢!

最佳答案

该问题是由于laravel没有自动生成UUID引起的。通常,如果您希望模型使用 uuid,您可以重写其引导函数并提供 uuid 创建逻辑。例如,您可以在此处查看它的实际效果:

https://medium.com/binary-cabin/automatically-generating-a-uuid-on-your-laravel-models-b8b9c3599e2b

但是,作业和失败作业表不是模型。如果你检查 Illuminate/Queue/DatabaseQueue 类,你会发现它只执行基本的数据库更新、插入。因此,如果您确实必须更改这些表以使用 UUID,那么您唯一的选择就是重构此核心 Laravel 代码,但不建议这样做。

您可以采取的另一种方法是,为作业和失败的作业创建 2 个新的中间模型(例如 MyJob 和 MyFailedJob),并使用原始表上的 sql 触发器填充这些表。您可以在这些中间模型上使用 uuid。

希望对你有帮助

关于php - Laravel:队列作业表修改字段问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57361442/

相关文章:

php - 带单引号的 XPATH 查询

php - 在带有 PDO 的 where 子句中使用 mysql 变量

一个请求后 PHP SoapClient 失败

mysql - 如何从 NetBeans 连接到 MySQL

mysql - 将 MySQL 数据导入 MS Access 时关系丢失

java - 在android中使用volley发送json数组将mysql中的多条记录添加到php脚本

laravel - 有没有办法在 Laravel/Flysystem 中正确关闭文件句柄?

php - 将 Div 作为 Google 文档中的页面并粘贴拆分内容?

email - 在 Laravel 中发送邮件时缺少 Illuminate\Support\Manager::createDriver() 的参数 1

mysql - 添加外键 SQL 违规,Laravel