Php Laravel 4.2 ORM-三表查询关系
我有一个数据库模式,如下所示:Php Laravel 4.2 ORM-三表查询关系,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我有一个数据库模式,如下所示: 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'); } 应答模型
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);
但它只提供用户表数据,不返回问题和答案。我认为您可以使用has-many-through关系。既然你用的是雄辩的,那就试试。我认为你可以用一个有很多贯穿关系的词。由于您使用的是雄辩,请尝试。您的问题的解决方案是“急切加载”,让我们看看如何将其用于您的情况
$user_profile = User::with('answer')->find($userid);
这不会给您该用户的问题,原因是您缺少用户和问题之间的关系
如上所述,你们可以得到答案,因为每个答案都和问题有关,所以你们可以得到问题,但这不是理想的解决方法
建议
您的关系和模型不合适—它可能足以满足您的需要,但随着应用程序的增长,您将遇到许多问题
如果我这样做的话,我的关系会有所不同,包括数据库结构。例如:
用户:id、名称
问题:id、标题
答案:id,答案
UserQuestion:这应该是用户和问题的透视表[User\u id,Question\u id]
UserAnswer:这应该是用户和答案[User\u id,Answer\u id]的透视表
问题答案:这应该是问题和答案的数据透视表[问题id,答案id]
这些数据透视表可以有不同的场景,您可以使用User\u Question\u Answer[User\u id,Question\u id,Answer\u id],但这取决于您的应用程序需要。您的问题的解决方案是“急切加载”,让我们看看如何在您的情况下使用它
$user_profile = User::with('answer')->find($userid);
这不会给您该用户的问题,原因是您缺少用户和问题之间的关系
如上所述,你们可以得到答案,因为每个答案都和问题有关,所以你们可以得到问题,但这不是理想的解决方法
建议
您的关系和模型不合适—它可能足以满足您的需要,但随着应用程序的增长,您将遇到许多问题
如果我这样做的话,我的关系会有所不同,包括数据库结构。例如:
用户:id、名称
问题:id、标题
答案:id,答案
UserQuestion:这应该是用户和问题的透视表[User\u id,Question\u id]
UserAnswer:这应该是用户和答案[User\u id,Answer\u id]的透视表
问题答案:这应该是问题和答案的数据透视表[问题id,答案id]
您可以使用这些透视表的不同场景,您可以使用User\u Question\u Answer[User\u id,Question\u id,Answer\u id]进行操作,但这取决于您的应用程序需要