Php 拉雷维尔口若悬河-有许多+;更多
我正在Laravel中创建一个调查模块,其中包含对象Php 拉雷维尔口若悬河-有许多+;更多,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,我正在Laravel中创建一个调查模块,其中包含对象Survey,这些对象有很多('SurveyQuestion')(基本上JOINing surveys.id=survey\u questions.survey\u id) 但是,我想在所有调查中问几个问题(调查id=0,与任何调查)即姓名、电子邮件等 是否可以装配hasMany关系来添加这两个问题(基本上是其中survey\u questions.survey\u id=survey\u id或survey\u questions.surve
Survey
,这些对象有很多('SurveyQuestion')代码>(基本上JOIN
ing surveys.id=survey\u questions.survey\u id)
但是,我想在所有调查中问几个问题(调查id=0,与任何调查
)即姓名、电子邮件等
是否可以装配hasMany关系来添加这两个问题(基本上是其中survey\u questions.survey\u id=survey\u id或survey\u questions.survey\u id=0
) 您可以在您的调查模型上尝试以下内容:
public function questions() {
return $this->hasMany('SurveyQuestion')->orWhere('survey_questions.survey_id', '0');
}
使用返回关系的函数,然后使用另一个调用该关系的公共函数,并将额外的记录预先添加到集合中
function surveyquestions() {
return $this->hasMany('SurveyQuestion');
}
function getPaddedSurveyQuestions() {
$padded = SurveyQuestions::getId0QuestionsHere();
return $this->surveyquestions()->merge($padded);
}
这是一个粗略的代码,因为您需要以更易于管理的方式找到id=0的调查问题,您可能需要使用Collection->prepend()而不是merge()来将填充的问题放到您想要的地方,但它可能会给您一些方向。为什么您的id为零?正如他所解释的,我相信它们是“全局的”这闻起来像是麻烦。既然你在每次调查中都会问这两个问题,为什么不把这两个问题当作其他问题来对待呢?或者将它们与用户结合起来,并将它们视为注册过程中发生的事情。