Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
Laravel 8:将模型序列化到排队作业时是否使用withoutRelations()方法?_Laravel_Eloquent_Documentation_Laravel Queue_Laravel 8 - Fatal编程技术网

Laravel 8:将模型序列化到排队作业时是否使用withoutRelations()方法?

Laravel 8:将模型序列化到排队作业时是否使用withoutRelations()方法?,laravel,eloquent,documentation,laravel-queue,laravel-8,Laravel,Eloquent,Documentation,Laravel Queue,Laravel 8,我一直在阅读Laravel的文档。那里有明文规定 如果排队作业在其构造函数中接受雄辩的模型,则只有模型的标识符将序列化到队列中。实际处理作业时,队列系统将自动从数据库中重新检索完整的模型实例及其加载的关系。 但在处理关系一节中再次提到 因为加载的关系也会被序列化,所以序列化的作业字符串可能会变得相当大。要防止序列化关系,可以在设置属性值时对模型调用withoutRelations方法。此方法将返回没有加载关系的模型实例 使用以下代码: /** * Create a new job instanc

我一直在阅读Laravel的文档。那里有明文规定

如果排队作业在其构造函数中接受雄辩的模型,则只有模型的标识符将序列化到队列中。实际处理作业时,队列系统将自动从数据库中重新检索完整的模型实例及其加载的关系。

但在处理关系一节中再次提到

因为加载的关系也会被序列化,所以序列化的作业字符串可能会变得相当大。要防止序列化关系,可以在设置属性值时对模型调用withoutRelations方法。此方法将返回没有加载关系的模型实例

使用以下代码:

/**
* Create a new job instance.
*
* @param  \App\Models\Podcast  $podcast
* @return void
*/
public function __construct(Podcast $podcast)
{
    $this->podcast = $podcast->withoutRelations();
}
此示例及其支持的段落相互矛盾,因为在第一段中明确提到,如果在构造函数中传递模型,则只有模型的标识符将被序列化,而没有关系。完整模型及其关系将在稍后实际处理作业时检索。然而,在这个例子中,我们显式地调用withoutRelations(),根据第一段,它是多余的,也没有具体说明第二段中的观点

有人能解释一下吗。。。?
非常感谢您的回答和帮助。

Laravel序列化了一系列关系名称。您可以轻松地运行
serialize(new\App\Models\User::with(['country'])->find(42))