Laravel красноречивый «Вызов неопределенной связи»

#laravel #eloquent #relationship

#laravel #красноречивый #связь

Вопрос:

Я пытаюсь настроить отношения в Laravel.

Survey.php:

 namespace App;

use IlluminateDatabaseEloquentModel;

class Survey extends Model
{
    public function survey_questions()
    {
        return $this->hasMany(SurveyQuestion::class);
    }
}
  

И SurveyQuestion.php модель:

 namespace App;

use IlluminateDatabaseEloquentModel;

class SurveyQuestion extends Model
{
    public function survey()
    {
        return $this->belongsTo(Survey::class);
    }
}
  

Связь работает одним способом:

 >>>$a = SurveyQuestion::with('survey')->get();
=> IlluminateDatabaseEloquentCollection {#2953
     all: [
       AppSurveyQuestion {#2931
         id: 1,
         survey_id: 2,
         question_id: 1,
         survey: AppSurvey {#2967
           id: 2,
           name: "Survey 2",
           created_at: "2020-08-20 18:17:45",
           updated_at: "2020-08-20 18:17:45",
           status: "active",
         },
       },
...
  

Но приводит к ошибке при попытке другой модели:

 >>> $a = Survey::with('survey_questions')->get();
Illuminate/Database/Eloquent/RelationNotFoundException with message 'Call to undefined relationship [survey_questions] on model [App/Survey].'
  

Чего мне не хватает? ТИА!

Ответ №1:

Используя предоставленную информацию, я не смог воспроизвести вашу проблему. Фактически, он возвращает опрос со своим вопросом.

 >>> Survey::with('survey_questions')->get();
=> IlluminateDatabaseEloquentCollection {#4095
     all: [
       AppSurvey {#4029
         id: "1",
         created_at: "2020-08-26 00:22:23",
         updated_at: "2020-08-26 00:22:23",
         survey_questions: IlluminateDatabaseEloquentCollection {#4103
           all: [
             AppSurveyQuestion {#4101
               id: "1",
               survey_id: "1",
               created_at: "2020-08-26 00:22:23",
               updated_at: "2020-08-26 00:22:23",
             },
           ],
         },
       },
     ],
   }

  

Не могли бы вы предоставить минимальный рабочий пример в виде репозитория Github?

Комментарии:

1. Спасибо за отзыв — как оказалось, это была смесь ошибки пользователя и ненадежного SFTP-клиента.