我正在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
)?
答案 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');
}