【问题标题】:Laravel Eloquent - hasMany + moreLaravel Eloquent - hasMany + 更多
【发布时间】:2015-09-15 13:20:40
【问题描述】:

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

但是,我想在所有调查(即姓名、电子邮件等)中提出几个问题(survey_id = 0,不对应于任何Survey)。

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

【问题讨论】:

  • 为什么你的 id 会为零?
  • 正如他所解释的,我相信它们是“全球性”问题
  • 这闻起来很麻烦。为什么不将这两个问题视为任何其他问题,因为您在每次调查中都会问它们?或者将它们与用户结合起来,并将它们视为注册过程中发生的事情。

标签: php laravel laravel-4 eloquent


【解决方案1】:

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

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

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

这是粗略的代码,因为您需要以更易于管理的方式找到您的 id=0 SurveyQuestions,并且您可能需要使用 Collection->prepend() 而不是 merge() 将填充问题放在您想要的位置,但它可能会给你一些方向。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-05-10
      • 2021-08-28
      • 2016-03-17
      • 1970-01-01
      • 2020-03-12
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      相关资源
      最近更新 更多