2017-02-23 44 views
0

有很多答案我想获取由ID的问题,它有多个答案

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()]); 
    } 

我已经试过几个其他的方式做,但没有奏效

回答

0

你可以只取出的问题,并使用在视图中的关系。

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()的观点,Auth门面可有作为。您也可以使用帮助程序方法auth()

<p>{{ Auth::user()->email }}</p> 

<p>{{ auth()->user()->email }}</p> 

会工作得很好。

+0

谢谢罗伯特,这工作。我还想知道,在答案表中有一列user_id与用户表中的id列相关联。我如何获得已回答特定问题的用户名称。 Thanx – waq

+0

如果你有正确的关系设置,你可以在答案模型上做' - > user-> name'。但在这种情况下,请检查' - > with()'的用法。这将激发所需的模型并允许点符号。这会节省你很多的疑问:)例如:'Question :: with('answers.user') - > find($ id);' – Robert

+0

谢谢罗伯特的帮助,也工作过:) – waq

相关问题