Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Laravel 5 我想通过id获取一个问题,它有多个答案_Laravel 5_Laravel 5.3 - Fatal编程技术网

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>