В настоящее время у меня есть 3 таблицы:
Posts:
-id
-text
-user_id
Comments:
-id
-text
-post_id
-user_id
Likes:
-id
-user_id
-comment_id
Я хочу получать как Комментарии, так и лайки на эти комментарии на моем show()
контроллере сообщений. Этот код в моем Models
, похоже, работал при использовании all()
, однако он полностью ломается, когда я пытаюсь выполнить поиск по id
. Он всегда возвращает все Posts
, хотя должен получить только один.
class Posts extends Model
{
public function comments(){
return $this->hasMany('App\Models\Comments', 'post_id', 'id');
}
public function comment_likes(){
return $this->hasManyThrough(
'\App\CommentLikes',
'\App\Models\Comments',
'post_id', 'comment_id', 'id'
);
}
}
И код контроллера:
public function show($id){
$query =\App\Models\Posts::find($id)->with('comments')->with('comment_likes')->get();
if(is_null($query)){
return response()->json(['Not found'], 404);
}
return response()->json($query, 200);
}
Это вообще правильный способ сделать это?