Задать вопрос
erniesto77
@erniesto77
oop, rb, py, php, js

Почему RelationNotFoundException при выполнении Job'а в очереди?

Привет. Есть связь многие-ко-многим с таблицей respondent_answer (laravel 5.3)
class Respondent {
    // ...
    public function answers()
    {
        return $this->belongsToMany(Answer::class);
    }
}

class Answer {
    // ...
    public function respondents()
    {
        return $this->belongsToMany(Respondent::class);
    }
}


так же есть Job который выполняется в очереди
class AnalyzeRespondentAnswersJob implements ShouldQueue
{
    use InteractsWithQueue, Queueable, SerializesModels;

    // ...

    public function handle()
    {
        $respondent = $this->event->respondent->fresh(['answers']); // тут падает ошибка RelationNotFoundException
        // ...
    }
}


Текст ошибки:
production.ERROR: exception 'Illuminate\Database\Eloquent\RelationNotFoundException' with message 'Call to undefined relationship [answers] on model [App\Models\Respondent].'


Обратите внимание, что связь answers существует, и в tinker'е она правильно отрабатывает. Так же на другом сервере точно такой же код работает без ошибок.
Вот что я пробовал делать чтобы избавиться от ошибки:
composer dump
php artisan cache:clear
php artisan clear-compiled
php artisan optimize
php artisan queue:restart
service nginx restart
service php-fpm restart

но ошибка продолжает падать при выполнении Job'а. Что я упустил?
  • Вопрос задан
  • 182 просмотра
Подписаться 1 Средний 2 комментария
Решения вопроса 1
erniesto77
@erniesto77 Автор вопроса
oop, rb, py, php, js
проблема была в кешировании php-fpm https://friendhosting.net/blog/kyeshirovanie-php-f...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@assets
Back-end developer
Может ClassName а не ClassName::class? И проверьте должно быть with('ClassName')

Классы по namespace App\Answer итд
Ответ написан
Alex_Wells
@Alex_Wells
PHP/Kotlin
Настройте себе xdebug, поставьте брейкпоинт в джобе и смотрите, что туда приходит. Каким-то сочетанием клавиш (как на винде хз) можно открыть "консоль" - дергайте себе нужные реляции/методы и смотрите.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы