Конвертировать MySQL запрос для работы с Laravel
У меня есть этот запрос MySQL, который работает нормально для меня. Теперь я решил преобразовать свой проект в проект Laravel, поэтому я хочу преобразовать запрос MySQL в запрос Laravel.
Это мой запрос:
select c.username,
max(case when c.attribute = 'Cleartext-Password' then c.value end) as password,
max(case when c.attribute = 'Expiration' then c.value end) as expiration,
max(case when c.attribute = 'ChilliSpot-Max-Total-Octets' then c.value end) as quta,
max(case when c.attribute = 'Simultaneous-Use' then c.value end) as simul,
max(case when c.attribute = 'Max-All-Session' then c.value end) as session,
max(c.adsoyad) as realname, min(c.dtarih) as birthdate, min(c.telefon) as phone,min(c.tcno) as tc,max(c.email) as email,min(c.id) as id
from radcheck c
group by c.username
Как мне это сделать?
1 ответ
Решение
Для преобразования выше с помощью построителя запросов laravel вам нужно перейти к необработанным выражениям
$result = DB::table('radcheck as c')
->select('c.username',
DB::raw("max(case when c.attribute = 'Cleartext-Password' then c.value end) as password"),
DB::raw("max(case when c.attribute = 'Expiration' then c.value end) as expiration"),
DB::raw("max(case when c.attribute = 'ChilliSpot-Max-Total-Octets' then c.value end) as quta"),
DB::raw("max(case when c.attribute = 'Simultaneous-Use' then c.value end) as simul"),
DB::raw("max(case when c.attribute = 'Max-All-Session' then c.value end) as session"),
DB::raw("max(c.adsoyad) as realname"),
DB::raw("min(c.dtarih) as birthdate"),
DB::raw("min(c.telefon) as phone"),
DB::raw("min(c.tcno) as tc"),
DB::raw("max(c.email) as email"),
DB::raw("min(c.id) as id")
)
->groupBy('c.username')
->get();