#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-клиента.