CriticController.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Models\Critic;
  5. use App\Models\Review;
  6. use App\Models\Specialization;
  7. use App\Models\Comment;
  8. class CriticController extends Controller
  9. {
  10. // Переход по страницам
  11. public function all(){ return view('critics.all', ['critics' => Critic::allWithOrder()]); }
  12. public function view_append(){ return view('critics.insert', ['specializations'=>Specialization::all()]); }
  13. function view_update(Request $request) { return view('critics/update', ['critic' => Critic::with('specialization')->find($request->update), 'specializations'=>Specialization::all()]); }
  14. // Взаимодействия со страницами
  15. function insert(Request $request) { // Добавить
  16. $request->validate([ 'name' => 'required' ], [ 'name.required' => 'Поле "Имя" не заполнено' ]);
  17. $critic = new Critic;
  18. $critic->name = $request->input("name");
  19. $critic->specialization_id = $request->input("specialization");
  20. $critic->save();
  21. return back()->with('message', 'Критик добавлен!');
  22. }
  23. function update(Request $request) { // Изменить
  24. $request->validate([ 'name' => 'required' ], [ 'name.required' => 'Поле "Имя" не заполнено' ]);
  25. $critic = Critic::find($request->input("id"));
  26. $critic->name = $request->input("name");
  27. $critic->specialization_id = $request->input("specialization");
  28. $critic->save();
  29. return back()->with('message', 'Критик обновлен!');
  30. }
  31. function delete(Request $request) { // Удаление
  32. $reviews = Review::where('author_id', $request->delete)->get();
  33. foreach ($reviews as $review) Comment::where('post_type', 'use App\Models\Review;')->where('post_id', $review->id)->delete();
  34. Review::where('author_id', $request->delete)->delete();
  35. Critic::where('id', $request->delete)->delete();
  36. return back();
  37. }
  38. }