Я пытаюсь получить все разделы и отфильтровать вопросы внутри каждого раздела, используя столбец user_id
, который предназначен для вопросов. Таблицы go вот так
Schema::create('survey_sections', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->longText('description');
$table->timestamps();
});
Schema::create('survey_questions', function (Blueprint $table) {
$table->increments('id');
$table->string('question');
$table->string('instruction')->nullable();
$table->integer('user_id')->unsigned();
$table->integer('survey_section_id')->unsigned();
$table->integer('response_type_id')->unsigned();
$table->boolean('optional');
$table->integer('num')->nullable();
$table->integer('rank')->nullable();
$table->boolean('show_text')->nullable();
$table->timestamps();
$table->foreign('survey_section_id')->references('id')->on('survey_sections');
$table->foreign('response_type_id')->references('id')->on('response_types');
$table->foreign('user_id')->references('id')->on('users');
});
Это то, что я пробовал
$user = auth()->user()->user_type_id;
if ($user === 1) {
$surveySection = SurveySection::with('questions')->get();
} else if ($user === 2 || $user === 3) {
$surveySection = SurveySection::with('questions')
->whereHas('questions', function ($query) {
$query->where('user_id', auth()->user()->id);
})->get();
}
dd(json_encode($surveySection));
(я вошел как тип пользователя = 2)
Однако вывод не то, что я хотел, он показывает мне один раздел, где пользователь добавил вопросы, но он показывает мне все вопросы, я хочу, чтобы он отображал все разделы, и когда раздел выбран, он будет отображать только вопросы, зарегистрированные в пользователь создал для этого раздела.
Логика c заключается в том, что это веб-сайт опроса для школы, и если несколько человек добавляют вопросы в один и тот же раздел при выборе для опроса, будут отображаться все вопросы, а мне нужны только те вопросы, которые человек, созданный для показа.