Laravel 队列 SerializesModels 特征删除相关值

Laravel Queue SerializesModels Trait Removes Related Values

在分派作业之前,我 运行 一个 eloquent 查询连接三个表并从每个表中选择数据。我将结果传递给作业构造函数并将其分配给 $this->data 但我相信 SerializesModels 特征正在删除所有连接的数据,因为:

Because of the SerializesModels trait that the job is using, Eloquent models will be gracefully serialized and unserialized when the job is processing. If your queued job accepts an Eloquent model in its constructor, only the identifier for the model will be serialized onto the queue. When the job is actually handled, the queue system will automatically re-retrieve the full model instance from the database.

因此,当我在 handle 方法中使用 $this->data 时,所有连接的数据都消失了,因为队列系统重新检索了模型实例。

如何阻止这种情况发生?我不想重新 运行 已经是 运行.

的查询

您唯一的选择是删除 SerializesModels 特征,它将原始数据存储在 table。

您遇到的是具有该特征的预期行为。这样一来,除其他原因外,您不会因为存储原始模型 + 关系而在数据库中存储大量数据。

请注意,如果您确实删除了该特征,请确保您存储数据的列足够大以存储所有数据,否则您将 运行 进入 t运行阳离子问题。