Laravel считать уникальное значение базы данных - PullRequest
0 голосов
/ 25 марта 2020

Мне нужно выполнить функцию подсчета:

  • Пользователь может загружать только 5 файлов (всего) в сутки. Например: сегодня пользователь имеет 5 доступных загрузок, пользователь загрузил файл myFile1.txt, и теперь он имеет 4 доступных загрузки сегодня, но если он хочет снова загрузить файл myFile1.txt, он может сделать это столько раз, сколько он хочет (по-прежнему 4 доступны для скачивания), но если он скачал новый файл myFile2.txt, то теперь у него есть 3 доступных скачивания.

Мой вопрос, как отследить, сколько раз Пользователь скачал файл. Это мой код:

    /*
      * $id {string} = file name;
      * $dayStart (Timestamp) = example: 2020-03-25 00:00:00;
      * $dayEnd (Timestamp) = example: 2020-03-26 00:00:00;
      * $total (int) = how much User has downloaded;
      * $response = file download functionality.
      * auth()->user()->dailyDownloads (int) = default value 5.
    */
    public function downloadFile(Request $request, $id){
      $file = storage_path('app/files/') . $id .'.bin';

      // Tracking operation date, find all records in this date interval.
      $dayStart = Carbon::today();
      $dayEnd = Carbon::tomorrow();
      $total = DumpDownloadHistory::distinct('dataset')->where('user_id', auth()->user()->id)->
                      whereBetween('created_at', [$dayStart, $dayEnd])->count();

      $findIfDownloaded = DumpDownloadHistory::distinct('dataset')->where('user_id', auth()->user()->id)->where('dataset', $id)->count();


      if ($total >= auth()->user()->dailyDownloads) {
        dd('To many downloads');
      }

      if (file_exists($file)) {
          $headers = [
              'Content-Type' => 'application/bin'
          ];

        $response = response()->download($file, $id.'.bin', $headers, 'inline');
        if ($response) {
          // Storing download history to Database
          auth()->user()->downloadHistorys()->create([
            'user_id' => auth()->user()->id,
            'dataset' => $id,
            'user_ip'=> request()->ip()
          ]);
          return $response;

        }
      } else {
          abort(404, 'File not found!');
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...