Подсчет строк из запроса laravel - PullRequest
0 голосов
/ 05 октября 2018

Просмотр через Интернет

Я пытаюсь подсчитать общее количество каждого из перечисленных лекарств и разделить его на общее количество каждого лекарства, а затем общее количество по месту.Все эти данные находятся в одной таблице.Контроллер, который я использую для получения каждого лекарства, находится ниже.Я пытаюсь определить, должен ли я написать запрос для каждого подсчета, который я ищу, или мне нужно сделать функцию подсчета php для каждого, или у laravel есть что-то, чтобы сделать это менее трудоемким?

enter code here public function index()
{
    $medications = ControlledSubstances::with('Medications', 'Locations')->paginate('10');

    $rx = Medications::where('controlled', '1')->get()
                ->keyBy('id')
                ->map(function ($rx){
                    return"{$rx->trade_name}  -  {$rx->brand_name}";
                });

    $cs = Medications::get();

    $nb = NarcoticBoxes::get()
                ->keyBy('id')
                ->map(function ($nb){
                    return"{$nb->box_number}";
                });

    $status = VialStatus::get()
                ->keyBy('id')
                ->map(function ($status){
                    return"{$status->label}";
                });

    return view('logistics.controlled', compact('medications', 'rx', 'nb', 'status', 'cs'))->with('success', 'New Controlled Substance Added');
}

Ответы [ 2 ]

0 голосов
/ 06 октября 2018
$mcount = ControlledSubstances::
            select('medication', DB::raw('count(*) as count'), DB::raw('count(IF(status = 3,1,NULL)) safe'), DB::raw('count(IF(status = 4,1,NULL)) box'), DB::raw('count(IF(status = 8,1,NULL)) destroyed') ) 
            ->groupBy('medication')
            ->get();
0 голосов
/ 05 октября 2018

Цитирование из Laravel 5 Документов :

$price = DB::table('orders')
    ->where('finalized', 1)
    ->avg('price');

Затем изменение avg('price') на count() даст вам счет.

В качестве альтернативы:

$users = DB::table('users')
    ->select(DB::raw('count(*) as user_count, status'))
    ->where('status', '<>', 1)
    ->groupBy('status')
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...