FaqThemes::with(['questions' => function ($q) { return $q->select('faq_questions.*') ->selectRaw( '(1 - faq_questions.negative_vote / faq_questions.positive_vote) AS `faq_questions_utility`' )->orderBy('faq_questions_utility', 'desc'); }])->orderBy('order')->get() ]); } public function updateSatisfactionStat(UpdateStatisfationStatRequest $request, FaqQuestions $question) { $opinion = (bool)$request->opinion; $sessionKey = sprintf('faq.questions.%d', $question->id); if (!session()->has($sessionKey)) { session()->put($sessionKey, true); session()->save(); if ($opinion) { $question->positive_vote = intval(($question->positive_vote ?? 0) + 1); } else { $question->negative_vote = intval(($question->negative_vote ?? 0) + 1); } $question->saveOrFail(); } return response()->json(); } }