@Sinnbeck
public function index(Websites $website) {
$reviews = $website->reviews()->where('report_status', '!=', 3)->orderBy('created_at', 'DESC')->with('reply', 'reports')->paginate(20);
if(auth()->check()) {
$date = ReviewReports::where('user_id', auth()->user()->id)->orderBy('id', 'DESC')->limit(1)->value('created_at');
$date = new DateTime($date);
$date5minRep = $date->modify('+5 minutes')->format('Y-m-d H:i:s');
}
$baseInfo = $website->loadCount([
'reviews' => function ($query) {
$query->where('report_status', '!=', 3);
},
'reviews as oneStar_count' => function ($query) {
$query->where('report_status', '!=', 3)
->where('review_stars', '1');
},
'reviews as twoStar_count' => function ($query) {
$query->where('report_status', '!=', 3)
->where('review_stars', '2');
},
'reviews as threeStar_count' => function ($query) {
$query->where('report_status', '!=', 3)
->where('review_stars', '3');
},
'reviews as fourStar_count' => function ($query) {
$query->where('report_status', '!=', 3)
->where('review_stars', '4');
},
'reviews as fiveStar_count' => function ($query) {
$query->where('report_status', '!=', 3)
->where('review_stars', '5');
},
]);
if(auth()->check()) {
return view('reviews.index', compact('website', 'reviews', 'baseInfo', 'date5minRep'));
} else {
return view('reviews.index', compact('website', 'reviews', 'baseInfo'));
}
}
There are some calculations that has nothing to do with database but with the results from baseInfo. I've hidden them because it is way too long array.