Laravel - getQueueableRelations 和循环关系

标签 laravel

升级到 Laravel 5.6 后,我遇到了 qeueable 模型序列化问题。

经过对 Xdebug 的一些调查,似乎循环 belongsTo 关系会产生无限循环,而 getQueueableRelations 尝试解析每个模型的关系。

在我的 Foo 模型中:

function selectedItem()
{
    return $this->belongsTo(Item::class);
}

在我的 Item 模型中:

function foo()
{
    return $this->belongsTo(Foo::class);
}

请注意,此遗留代码自 Laravel 5.1 起就存在于项目中,并且从未产生任何问题。

知道如何在不改变逻辑的情况下解决这个问题吗?

最佳答案

这是在 Laravel 将 getQueueableRelations 添加到 Eloquent 模型时引入的。您只需重写此方法以返回空数组即可使其像以前一样工作;

查看旧版本:https://github.com/laravel/framework/blob/5.5/src/Illuminate/Queue/SerializesAndRestoresModelIdentifiers.php#L23

查看新内容:https://github.com/laravel/framework/blob/5.7/src/Illuminate/Queue/SerializesAndRestoresModelIdentifiers.php#L23

所以在你的模型中你可以这样做:

    /**
     * {@inheritdoc}
     */
    public function getQueueableRelations()
    {
        return [];
    }

您的序列化将像以前一样运行。

关于Laravel - getQueueableRelations 和循环关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52514863/

相关文章:

php - Laravel 什么是使用 HasFactory?

php - 我不明白 JWT 刷新 token 的行为 (LARAVEL)

php - Laravel 5 > 使用 monolog 自省(introspection)处理器

php - Laravel Lumen 确保 JSON 响应

php - 如何使用同一个 Eloquent 查询两次,但使用一个不同的 where 子句?

php - Laravel 中未定义的类请求

javascript - 使用FineUploader上传带索引的多个文件

php - Laravel 5.2 - 带数组的过滤器

php - 如何在访问 laravel 环境和类时在命令行上运行 php 脚本

Laravel 8 Jetstream : adding new field to the registration process