For your first code, I think this is cleaner.
$this->limit = $request->input('limit', config('app.limit'));
You can pass a default value as the 2nd parameter if it doesn't exist in request. https://laravel.com/docs/5.7/requests#retrieving-input
For your other question, yes you could create a settings table, or just put it as a field on the users table. It depends on what you're doing. My app allows the user to set their timezone, and then all dates returned get converted to their timezone for display in their local timezone. It's basically the same thing. Just create a helper function or something, that would get the limit, depending on how your app needs it.
For example, what if you allowed both options? Allowed them to set it on their user settings, and also allowed them to change it via a dropdown (which I assume is where $request->limit comes from). You'd need some logic to determine which one to use, which would be in the helper function. Do you use the default, the one in the user settings, or the one in the dropdown?