判断用户是否对帖子或回复进行点赞时,如何避免 N+1 问题?
您好,我实现了一个点赞模型,请问在对每个帖子或者回复判断是否点赞得时候,如何避免N+1问题?
public function index(Request $request, Sentence $sentence)
{
$query = $sentence->query();
if ($schoolID = $request->school_id) {
$query->where('school_id', $schoolID);
}
$query->recent();
$sentences = $query->paginate(20);
return $this->response->paginator($sentences, new SentenceTransformer());
}
public function transform(Sentence $sentence)
{
return [
'id' => (int)$sentence->id,
'content' => $sentence->content,
'user_id' => (int) $sentence->user_id,
'school_id' => (int) $sentence->school_id,
'reply_count' => (int) $sentence->reply_count,
'like_count' => (int) $sentence->like_count,
'is_liked'=>Like::where([['type', 'sentence'], ['type_id',$sentence->id],['user_id',Auth::guard('api')->id()]])->first()?true:false,
'created_at' => $sentence->created_at->diffForHumans(),
'updated_at' => $sentence->updated_at->toDateTimeString(),
];
}
可以参考 5.5 的 resource 写法:
增加一个方法