Laravel 5 我想通过id获取一个问题,它有多个答案
我有一个有很多答案的问题模型Laravel 5 我想通过id获取一个问题,它有多个答案,laravel-5,laravel-5.3,Laravel 5,Laravel 5.3,我有一个有很多答案的问题模型 class Question extends Model { public function answers() { return $this->hasMany('App\Answer'); } } 还有我的答案模型,在这个模型中每个答案都属于一个问题 class Answer extends Model { // public function question() { ret
class Question extends Model
{
public function answers()
{
return $this->hasMany('App\Answer');
}
}
还有我的答案模型,在这个模型中每个答案都属于一个问题
class Answer extends Model
{
//
public function question()
{
return $this->belongsTo('App\Question');
}
}
所以我想做的是,我想通过它的id来获取一个问题,它应该有属于这个特定问题的所有答案,我想一起把它传递给我的观点
以下是我迄今为止所做的工作
public function show($id)
{
$questions = Question::with('questions')
->join('answers', 'answers.question_id' , '=' , $id)
->select('questions.id',
'questions.ask_question',
'answers.user_id',
'answers.aanswer',
'answers.created_at')
->where('questions.id' , '=', 'answers.question_id')
->get();
return view('pages.show', ['questions' => $questions , 'user' => Auth::user()]);
}
我尝试过其他几种方法,但都不起作用您可以获取问题并在视图中使用关系
public function show($id)
{
$question = Question::find($id);
if ( ! $question) {
abort(404);
}
return view('pages.show', compact('question'));
}
在您的模型中,您可以执行以下操作:
<h2>{{ $question->question }}</h2>
<ul>
@foreach ($question->answers as $answer)
<li>{{ $answer->answer }}</li>
@endforeach
</ul>
或
{{auth()->user()->email}
会很好的。谢谢你,罗伯特,这很有效。我还想知道在answers表中有一列user\u id,它与users表中的id列相关联。如何获取已回答特定问题的用户名。Thanxi如果关系设置正确,您只需在应答模型上执行
->user->name
。但是在这种情况下,请检查->with()的用法。这将加载所需的模型,并允许点表示法。这将为您节省大量查询:)示例:Question::with('answers.user')->find($id)代码>
<p>{{ Auth::user()->email }}</p>
<p>{{ auth()->user()->email }}</p>