gpt4 book ai didi

Laravel 5 Eloquent 关系一通

转载 作者:行者123 更新时间:2023-11-30 23:45:56 24 4
gpt4 key购买 nike

我有以下数据库结构

products            quesionnaires           questionnaire_results
-------- -------------- ----------------------
id id id
questionnaire_id questionnaire_id
product_id

调查问卷可用于多个产品,并将每个产品的结果单独存储在调查问卷结果表中。

一个产品只能有一份调查问卷及其调查问卷的一个结果。

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

最佳答案

如果您没有 QuestionnaireResult 模型,则没有直接的 Eloquent 关系,因为所有默认关系都依赖于 Eloquent 模型的存在。然而,有一种相当干净的方法可以通过将其视为 Many to Many 来实现此目的。 ProductQuestionnaire 之间的关系,并将 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模型,那么您就有一个非常简单的 One to One关系,无需通过另一个模型。您有一些属于某个产品的调查问卷结果,而一个产品只能有一组调查问卷结果(根据您的帖子信息)。

产品型号:

public function questionnaireResult() {
return $this->hasOne('App\QuestionnaireResult');
}

问卷结果模型:

public function product() {
return $this->belongsTo('App\Product');
}

关于Laravel 5 Eloquent 关系一通,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36223587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com