首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉威尔5雄辩的认知度有一个贯通

拉威尔5雄辩的认知度有一个贯通
EN

Stack Overflow用户
提问于 2016-03-25 16:08:50
回答 2查看 1.7K关注 0票数 2

我有以下数据库结构

代码语言:javascript
复制
products            quesionnaires           questionnaire_results
--------            --------------          ----------------------
id                  id                      id
questionnaire_id                            questionnaire_id
                                            product_id

问卷可以用于多个产品,并将每个产品的结果存储在questionnaire_results表中。

产品只能有一个问卷,也只能有一个问卷的结果。

我需要一种从产品模型中获得问卷结果的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-25 16:18:03

如果您没有QuestionnaireResult模型,那么这方面就没有直接的雄辩关系,因为所有默认关系都依赖于雄辩模型的存在。然而,有一种相当干净的方法可以实现这一点:将其视为ProductQuestionnaire之间的一种Questionnaire关系,并将questionnaire_results作为您的枢轴表(即使您确实知道某个产品只属于一个问题单)。

产品模型:

代码语言:javascript
复制
public function questionnaire() {
    return $this->belongsToMany('App\Questionnaire', 'questionnaire_results');
}

问卷模式:

代码语言:javascript
复制
public function products() {
    return $this->belongsToMany('App\Product', 'questionnaire_results');
}

由于这个关系将返回一个集合,所以您需要使用[0]访问第一个数组,或者使用first()方法。

代码语言:javascript
复制
$product->questionnaire()->first();

但是,如果您有一个QuestionnaireResult模型,那么您就有一个非常简单的一对一关系,不需要再经历另一个模型。你有一些属于一个产品的问卷结果,而一个产品只能有一组问卷结果(根据你的帖子信息)。

产品模型:

代码语言:javascript
复制
public function questionnaireResult() {
    return $this->hasOne('App\QuestionnaireResult');
}

问卷结果模型:

代码语言:javascript
复制
public function product() {
    return $this->belongsTo('App\Product');
}
票数 4
EN

Stack Overflow用户

发布于 2016-03-25 16:17:03

代码语言:javascript
复制
// Product Model
public function quesionnaire() {
    return $this->hasOne("App\Quesionnaire");
}

// Quesionnaire Model
public function questionnaire_result() {
    return $this->hasOne("App\Questionnaire_result");
}

$product->quesionnaire->questionnaire_result

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36223587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档