我有一个类似这样的数据库模式:
user
id
name
question
id
title
answer
id
answer_text
user_id
question_id
现在我想选择所有问题的用户和每个问题答案的用户。
我正在尝试这种方式:
用户模型
public function answer()
{
return $this->hasMany('answers','user_id','question_id');
}
答案模型
public function question()
{
return $this->belongsTo('questions','question_id');
}
现在从用户控制器调用
$user_profile = User::find($userid);
但它只提供用户表格数据,不会回答问题和答案。
答案 0 :(得分:0)
我认为你可以使用has-many-through关系。由于您使用的是Eloquent,请尝试使用this example。
答案 1 :(得分:0)
您的问题的解决方案是" EAGER LOADING" ,让我们看看我们如何在您的情况下使用它。
$user_profile = User::with('answer')->find($userid);
这不会给你那个用户的问题,原因是你错过了用户和问题之间的关系。
上面说的你可以得到答案,因为每个答案都与问题有关,你可以得到问题但不是理想的方式。
<强>建议强> 你的关系和模型是不合适的,它可能足以满足你的需求,但随着你的应用程序的增长,你会遇到很多问题。
如果我愿意这样做,我的关系会有所不同,包括db结构。例如:
用户: id,name,.....
问题: id,title,...
答案: id,answer,...
UserQuestion:这应该是User&amp; amp;问题[user_id,question_id]
UserAnswer:这应该是User&amp; amp;的透视表。回答[user_id,answer_id]
QuestionAnswer:这应该是问题与解决方案的数据透视表。回答[question_id,answer_id]
您可以使用User_Question_Answer [user_id,question_id,answer_id]来获得这些数据透视表的不同情况,但它取决于您的应用程序需求。