所以基本上我需要将 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/