Laravel выбрать запрос - PullRequest
       7

Laravel выбрать запрос

0 голосов
/ 18 июня 2020

Я создаю запрос для приведенного ниже оператора select

SELECT empname, COUNT(empstatus) 
FROM empattens 
WHERE empstatus='Present' 
  AND id=1;

Код, который я использовал, - это следующий код

Empatten::where('id', $id)
        ->where('empstatus', '=', 'Present')
        ->get()
        ->count('empstatus');

Я получаю только count(empstatus), но Мне также нужен empname,

Ответы [ 2 ]

3 голосов
/ 18 июня 2020

Вы можете использовать метод select(), чтобы указать, какие поля вы хотите выбрать, а затем объедините его с DB::raw(), чтобы выбрать COUNT().

Empatten::select('empname', \DB::raw("COUNT(*) AS count"))
        ->where('id', $id)
        ->where('empstatus', '=', 'Present')
        ->get();

Но это не обязательно действительный SQL, поскольку вы используете агрегатные функции (в данном случае COUNT(), но другие примеры: MIN(), MAX(), AVG() ) при выборе столбцов. Вы должны указать GROUP BY для столбцов в списке выбора, которые не являются частью агрегированного оператора. Мы можем сделать это, используя метод groupBy() - результат не должен измениться, так как вы ищете определенный c ID.

Empatten::select('empname', \DB::raw("COUNT(*) AS count"))
        ->where('id', $id)
        ->where('empstatus', '=', 'Present')
        ->groupBy('empname')
        ->get();
0 голосов
/ 18 июня 2020
$empatten = Empatten::whereId($id)->where('empstatus','Present')->get(['empname']);

В результате вы получите коллекцию, затем вы можете получить счет с помощью

$count = $empatten->count();

или вы можете использовать запрос, например, как показано ниже

Empatten::select('empname', \DB::raw("COUNT(*) AS count"))
    ->whereId($id)->where('empstatus','Present')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...