Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eloquent 向作业发送有说服力的查询_Eloquent_Laravel 5.3 - Fatal编程技术网

Eloquent 向作业发送有说服力的查询

Eloquent 向作业发送有说服力的查询,eloquent,laravel-5.3,Eloquent,Laravel 5.3,我有一个相当复杂的查询,其中包含大量获取的数据。目前我有两个类似复杂查询的作业,现在我需要编写第三个作业。查询也用于数据表,因此我必须确保它们是相同的,这不是最优的,我有冗余代码。然而,我想改进我的代码,只需使用一个可以接受任何查询的作业 我想做的是将用于数据表的查询传递给一个作业,该作业接受任何查询并运行它,创建excel导出。但是,我不确定是否可以序列化实际查询而不是结果,因为执行查询可能需要很长时间,我希望通过我拥有的Redis队列来运行它 如果我试图将雄辩的查询传递给作业,我会得到“您无

我有一个相当复杂的查询,其中包含大量获取的数据。目前我有两个类似复杂查询的作业,现在我需要编写第三个作业。查询也用于数据表,因此我必须确保它们是相同的,这不是最优的,我有冗余代码。然而,我想改进我的代码,只需使用一个可以接受任何查询的作业

我想做的是将用于数据表的查询传递给一个作业,该作业接受任何查询并运行它,创建excel导出。但是,我不确定是否可以序列化实际查询而不是结果,因为执行查询可能需要很长时间,我希望通过我拥有的Redis队列来运行它

如果我试图将雄辩的查询传递给作业,我会得到“您无法序列化或取消序列化PDO实例”


如何解决此问题并将查询发送到要执行的作业?

默认情况下,Laravel作业使用序列化模型特征,因此检查作业是否使用该特征。此外,您无法序列化PDO对象,这就是为什么会出现异常

为了摆脱这个错误,你可以去掉这个特点,但我不想把你雄辩的问题传给一份工作。相反,根据传递给作业的所需参数的最小值,将查询保留在作业执行中

“我想做的是将用于我的数据表的查询传递给一个作业,该作业接受任何查询并运行它,创建excel导出”

一个查询或一系列查询很可能用文字描述为任务,因此为每个特定目的创建一个单独的作业。如果你为你所有的任务做一份单一的工作,那么它的可读性就会降低,维护难度也会增加&并在工作目的之间做出区分

相反,我会删除您提到的“冗余”代码,创建一个作业,在其中编写通用代码并将此作业扩展为单独的作业。就可重用代码而言,您可以使用存储库或服务&从单独的作业调用它