Какой-нибудь короткий способ для обработки нескольких запросов в Laravel? - PullRequest
1 голос
/ 11 ноября 2019

Мне нужно получить несколько результатов из разных запросов на одну таблицу. Например, мне нужно получить Количество, Сумма, Среднее одной таблицы. Должен ли я сделать это так или есть более короткий путь?

  public function index()
    {
        $count = Patient::all()->count();
        $dateCount = Patient::where('date', date("Y-m-d"))->count();
        $loanAmount = DB::table('patients')->sum('loan_amount');
        $payAmount = DB::table('patients')->sum('pay_amount');
        return view('index', compact('count','dateCount','loanAmount' ,'payAmount'));
    }

Если вы видите, что Все запросы для одной таблицы, чтобы получить конкретные результаты, так что в основном есть короткий способ получить эти результаты не по одному запросуза каждого?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Вы можете сделать это с помощью запроса к БД, как показано ниже:

  $data=\DB::table('patients')
  ->selectRaw('count(id) as count,sum(loan_amount) as loanAmount,sum(pay_amount) as payAmount,sum(case when date = "'.date("Y-m-d").'" then 1 else 0 end) AS dateCount')
  ->first();

Вы также можете сделать это с помощью eloquent, но он вернет вам коллекцию.

  $data=Patient::selectRaw('count(id) as count,sum(loan_amount) as loanAmount,sum(pay_amount) as payAmount,sum(case when date = "'.date("Y-m-d").'" then 1 else 0 end) AS dateCount')
  ->first();
0 голосов
/ 11 ноября 2019

Вы можете сделать что-то вроде этого.

public function index()
    {
        $patient = Patient::all();
        $count = $patient->count();
        $dateCount = Patient::today()->count();
        $loanAmount =  $patient->sum('loan_amount');
        $payAmount =  $patient->sum('pay_amount');
        return view('index', compact('count','dateCount','loanAmount' ,'payAmount'));
    }

Также вы можете создать область действия в вашей модели пациента:

public function scopeToday($query) {
  return $query->where('date', date("Y-m-d"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...