如何解决Laravel关系-问题,答案和用户答案
我有问题,我有3张桌子:
dbo.[YourTable ]
示例记录:
questions
id | text
answers
id | question_id | text
user_answers
id | user_id | question_id | text
因此,我想知道是否存在在模型中没有RAW SQL(具有联接等)的关系的方法。例如,如下所示:
questions
1 | Gender
2 | Age (input type,answers not exist in answers table)
3 | What kind of pets do you have?
answers
1 | 1 | Male
2 | 2 | Female
3 | 3 | Cat
4 | 3 | Dog
5 | 3 | Parrot
user_answers
1 | 100 | 1 | 1
2 | 100 | 2 | 30
3 | 100 | 3 | 4
3 | 100 | 3 | 5
结果:
$questions = Question::with('userAnswer')->where('user_id',100);
foreach($questions as $q)
{
echo $question->text;
foreach($question->userAnswers as $ans)
{
echo $ans->text
}
}
你知道我的意思吗?有什么想法吗? :) 谢谢您的关注!
已编辑:
这不起作用(关系stdAnswer为空),
Gender
- male
Age
- 30
What kind of pets do you have?
- dog
- parrot
这项工作:
$questions = LucidStandardQuestion::with('userAnswers.stdAnswer')->find(x);
并在模型LucidStandarQuestion中:
LucidStandardQuestion::with('userAnswers')->find(x)
并在模型LucidUserAnswer中:
public function userAnswers()
{
$uid = 1576;
return $this->hasMany(LucidUserAnswer::Class,'question_id')->where('user_id',$uid);
}
解决方法
这是一个简单的hasMany关系:
class Question extends Model
{
public function userAnswer()
{
return $this->hasMany(LucidUserAnswer::class,'question_id');
}
}
现在您的代码可能如下:
$questions = Question::with(['userAnswer' => function($query)
{
$query->where('user_id',100)->with('answer');
}])->get();
在LucidUserAnswer模型中,您应该建立关系
class LucidUserAnswer extends Model
{
public function answer()
{
return $this->belongsTo(Answer::class,'text');
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。