Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4.2 ORM-三表查询关系_Php_Mysql_Laravel_Eloquent - Fatal编程技术网

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]进行操作,但这取决于您的应用程序需要