CollectionController.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace App\Http\Controllers\Account;
  3. use App\Models\Article;
  4. use App\Models\Collection;
  5. use App\Models\Question;
  6. use Illuminate\Http\Request;
  7. use App\Http\Controllers\Controller;
  8. class CollectionController extends Controller
  9. {
  10. /**
  11. * 添加收藏
  12. *
  13. * @param \Illuminate\Http\Request $request
  14. * @return \Illuminate\Http\Response
  15. */
  16. public function store($source_type,$source_id,Request $request)
  17. {
  18. if($source_type == 'question'){
  19. $source = Question::find($source_id);
  20. $subject = $source->title;
  21. }else if($source_type == 'article'){
  22. $source = Article::find($source_id);
  23. $subject = $source->title;
  24. }
  25. if(!$source){
  26. abort(404);
  27. }
  28. /*不能多次收藏*/
  29. $userCollect = $request->user()->isCollected(get_class($source),$source_id);
  30. if($userCollect){
  31. $userCollect->delete();
  32. $source->decrement('collections');
  33. return response('uncollect');
  34. }
  35. $data = [
  36. 'user_id' => $request->user()->id,
  37. 'source_id' => $source_id,
  38. 'source_type' => get_class($source),
  39. 'subject' => $subject,
  40. ];
  41. $collect = Collection::create($data);
  42. if($collect){
  43. $source->increment('collections');
  44. }
  45. return response('collected');
  46. }
  47. }