Фильтровать элементы в коллекции в зависимости от столбца элемента. красноречивый - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь получить все разделы и отфильтровать вопросы внутри каждого раздела, используя столбец 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 заключается в том, что это веб-сайт опроса для школы, и если несколько человек добавляют вопросы в один и тот же раздел при выборе для опроса, будут отображаться все вопросы, а мне нужны только те вопросы, которые человек, созданный для показа.

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