I would say that it is up to you where you place it.
I prefer having the code in the controller method, and since I like single action controllers, it makes sense to have the logic in the controller.
However, you can place the logic in the model, or even use a service class to do the heavy lifting, like I said it's up to you which you choose.
I would however, recommend that you use KISS as much as possible.
That being said, if you work for a company, they usually have a way of working when it comes to code placement, and patterns. Those conventions how ever insane they might seem needs to be followed.
Here is an example on how one can do show in a single action controller with route model binding.
class GamesShowController extends Controller
{
public function __invoke(GameShowView $gameShowView)
{
return view('games.show')
->with([
'game' => $gameShowView,
]);
}
}
You are welcome to look how I done it in my Mediabase project.
https://github.com/Tray2/mediabase/tree/main