Laravel - getQueueableRelations & круговое отношение - PullRequest
0 голосов
/ 26 сентября 2018

После обновления до 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, и он никогда не создавал никаких проблем.

Есть идеи, как мне решить эту проблему без изменения этой логики?

1 Ответ

0 голосов
/ 02 февраля 2019

Это было введено, когда 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 [];
    }

И ваша сериализация будет действовать так же, как и раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...