как получить родительские значения из экземпляра дочерней модели с внешним ключом с помощью eager-loading в laravel 5.7 - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть четыре модели -User -Question -Answer -Comment

Модель User содержит

public function questions(){
        return $this->hasMany(Question::class);
 }
public function answers(){
        return $this->hasMany(Answer::class);
}
public function comments(){
        return $this->hasMany(Comment::class);
}

Модель вопроса содержит

public function users(){
        return $this->belongsTo(User::class,'user_id','id');
}
public function answers(){
        return $this->hasMany(Answer::class);
}
public function comments(){
        return $this->hasMany(Comment::class);
}

//таблица вопросов имеет user_id

модель ответов содержит

public function questions(){
        return $this->belongsTo(Question::class,'user_id','id');
}
public function users(){
        return $this->belongsTo(User::class);
}
public function comments(){
        return $this->hasMany(Comment::class);
}

// таблица ответов имеет user_id, question_id

модель комментариев содержит

public function questions(){
        return $this->belongsTo(Question::class);
}
public function users(){
        return $this->belongsTo(User::class);
}
public function answers(){
        return $this->belongsTo(Answer::class);
}

// таблица ответов содержит user_id, question_id, answer_id

всякий раз, когда я получаю доступ к модели вопроса, я могу получить доступ к пользователю, ответу, комментарию, связанному с этим вопросом

, но я хочу получить подробную информацию опользователь, который отвечает на вопрос, а также детали пользователя, который прокомментировал ответ.

это мой контроллер

public function show($slug){    
        $questionData = Question::with('users','answers','comments')->where('slug',$slug)->first();
         return view('questions.single',compact('questionData'));
}

но когда да, я делаю

@foreach($questionData->answers as $answer)
    $answer->user_id;
   //it retuns only the user_id from the answers table
   //how can i turn this to the username
@endforeach

я хочу получить имя пользователя, который ответил на вопрос, а также имя пользователя, который прокомментировал ответ

...