// Роут
Route::get('models/{model}', ...);
// Контроллер
public function show(Model $model)
{
// ...
}
public function show(Request $request)
{
dd($request->input('selectSetTopic'));
}
Route::get('/all', [YetAnotherController::class, 'allData']);
public function allData()
{
$users = User::all();
$companies = Company::all();
return view('all')->with(compact('users', 'companies'));
}
// Роут
Route::get('countries', [CountryController::class, 'index']);
// Контроллер
public function index()
{
// Обычный запрос
$countries = Country::all(['id', 'name']);
// Экономим 1мс. А может и теряем.
$countries = Cache::remember('countries', 100500, function () {
return Country::all(['id', 'name']);
});
}
// Роут для всех
Route::get('/{slug}', 'ContentControler@content');
// Контроллер
public function content(string $slug)
{
$category = Category::whereSlug($slug)->first();
if ($category) {
// Возвратили категорию
}
// Сюда попали если категории нет
$post = Post::whereSlug($slug)->firstOrFail();
// Возвратили пост
}
// Миграция users
$table->id();
$table->string('name');
// Миграция cities
$table->id();
$table->string('name');
// Миграция city_user
$table->foreignId('city_id')->constrained('cities');
$table->foreignId('user_id')->constrained('users');
// Модель User
public function cities()
{
return $this->belongsToMany(City::class);
}
public function handle(Request $request, Closure $next, string $subscription)
{
if (
$request->user()->subscription->name !== $subscription
|| $request->user()->subscription->valid_until < Carbon::now()
) {
abort(403);
}
return $next($request);
}
// Как вариант - json принимает заголовки третьим параметром
return response()->json($result, 200, ['Content-Type' => 'application/json; charset=UTF-8']);
// Это примерная идея, нужно проверять/тестировать
public function handle($request, Closure $next)
{
$response = $next($request);
$response->header('Content-Type', 'application/json; charset=UTF-8');
return $response;
}