Как я могу отфильтровать это с красноречивым - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь отфильтровать SurveyQuestionnaire, у которого есть Ответ = «плохой», а у их Вопросника есть шаг = «рейтинг».

Я пытался просмотреть документацию Eloquent и ничего не нашел.

Это мои модели.

class Questionnaire extends Model {

...

    public function surveysQuestionnaires() {
        return $this->hasMany(SurveyQuestionnaire::class, 'question_id');
    }

    public function answers() {
        return $this->hasMany(Answer::class, 'question_id');
    }

    public function questionnaires() {
        return $this->hasMany(QuestionnaireTranslation::class, 'question_id' );
    }

}

class SurveyQuestionnaire extends Model {


    public function survey() {
        return $this->belongsTo(Survey::class ,'survey_id');
    }

    public function questionnaires() {
        return $this->belongsTo(Questionnaire::class, 'question_id');
    }

    public function answer() {
        return $this->belongsTo(Answer::class, 'answer_id');
    }


}

1 Ответ

0 голосов
/ 03 июня 2018

Что ж, метод hasMany возвращает построитель запросов, поэтому вы можете просто добавить несколько условий:

public function surveysQuestionnaires() {
    return $this->hasMany(SurveyQuestionnaire::class, 'question_id')->where('Answer', 'poor');
}

Также вы можете прочитать эту ссылку Ограничение активных нагрузок и добавить своиусловия вручную после взятия экземпляра вашей модели:

$items = App\Questionnaire::with(['surveysQuestionnaires' => function ($query) {
   $query->where('Answer', 'poor');
}])->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...