我有以下数据库结构
products quesionnaires questionnaire_results
-------- -------------- ----------------------
id id id
questionnaire_id questionnaire_id
product_id问卷可以用于多个产品,并将每个产品的结果存储在questionnaire_results表中。
产品只能有一个问卷,也只能有一个问卷的结果。
我需要一种从产品模型中获得问卷结果的方法。
发布于 2016-03-25 16:18:03
如果您没有QuestionnaireResult模型,那么这方面就没有直接的雄辩关系,因为所有默认关系都依赖于雄辩模型的存在。然而,有一种相当干净的方法可以实现这一点:将其视为Product和Questionnaire之间的一种Questionnaire关系,并将questionnaire_results作为您的枢轴表(即使您确实知道某个产品只属于一个问题单)。
产品模型:
public function questionnaire() {
return $this->belongsToMany('App\Questionnaire', 'questionnaire_results');
}问卷模式:
public function products() {
return $this->belongsToMany('App\Product', 'questionnaire_results');
}由于这个关系将返回一个集合,所以您需要使用[0]访问第一个数组,或者使用first()方法。
$product->questionnaire()->first();但是,如果您有一个QuestionnaireResult模型,那么您就有一个非常简单的一对一关系,不需要再经历另一个模型。你有一些属于一个产品的问卷结果,而一个产品只能有一组问卷结果(根据你的帖子信息)。
产品模型:
public function questionnaireResult() {
return $this->hasOne('App\QuestionnaireResult');
}问卷结果模型:
public function product() {
return $this->belongsTo('App\Product');
}发布于 2016-03-25 16:17:03
// 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
https://stackoverflow.com/questions/36223587
复制相似问题