我怎样才能用雄辩的方法来过滤它

时间:2018-06-03 09:02:40

标签: php laravel orm eloquent

我尝试过滤SurveyQuestionnaire,其中Answer ='poor'且他们的问卷调查具有step ='rating'。

我试图查看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 :(得分:1)

嗯,hasMany方法返回查询构建器,因此您只需添加一些条件:

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

此外,您可以阅读此链接Constraining Eager Loads并在获取模型实例后手动添加条件:

$items = App\Questionnaire::with(['surveysQuestionnaires' => function ($query) {
   $query->where('Answer', 'poor');
}])->get();