Laravel Eloquent - 还有更多

时间:2015-09-15 13:20:40

标签: php laravel laravel-4 eloquent

我正在Laravel中创建一个调查模块,对象Survey hasMany('SurveyQuestion');(基本上是JOIN survey.id = survey_questions.survey_id)。

但是,我想在所有调查中提出一些问题(survey_id = 0,与任何Survey不对应)(即姓名,电子邮件等)。< / p>

是否可以通过修改hasMany关系来添加这两个问题(基本上是WHERE survey_questions.survey_id = survey_id OR survey_questions.survey_id = 0)?

2 个答案:

答案 0 :(得分:2)

拥有返回关系的函数,然后使用另一个调用该函数的公共函数,并将额外的记录添加到集合中。

function surveyquestions() {
    return $this->hasMany('SurveyQuestion');
}

function getPaddedSurveyQuestions() {
     $padded = SurveyQuestions::getId0QuestionsHere();
     return $this->surveyquestions()->merge($padded);
}

这是粗略的代码,因为您需要以更易于管理的方式找到您的id = 0 SurveyQuestions,并且您可能需要使用Collection-&gt; prepend()而不是merge()来获取填充问题你想要它们,但它可能会给你一些指导。

答案 1 :(得分:1)

你可以在你的调查模型上尝试这样的事情:

public function questions() {
    return $this->hasMany('SurveyQuestion')->orWhere('survey_questions.survey_id', '0');
}