简体   繁体   中英

How to convert raw query MYSQL to Laravel framework

I don't know how i can use this code below in Laravel 5.8 I already tried but i doesn't work correctly.

$sql = mysqli_query($db, "SELECT *, SUM(amount) AS SumBudget FROM messages GROUP BY contact_phone ORDER BY SUM(amount) DESC LIMIT 3");

$orderList = 0;
while ($data = mysqli_fetch_assoc($sql))
{
    $orderList++;
    $user = $data['user']; 
    $cost = $data['SumBudget'];
    if ($orderList == 1) {
        printf("%d. %s %d‎฿<br>", $orderList, $user, $cost);
    }
    else if ($orderList == 2)
    {
        printf("%d. %s %d‎฿<br>", $orderList, $user, $cost);
    }
    else 
    {
        printf("%d. %s %d‎฿<br>", $orderList, $user, $cost);
    }
}

My code already tried.

$data = DB::table('messages')
        ->where('phone_number', $request->phone_number)
        ->select(DB::raw('SUM(amount) as cost'))
        ->groupBy(DB::raw('contact_phone'))
        ->orderBy(DB::raw('SUM(amount)', 'DESC'))
        ->limit(3)
        ->get();

Can anyone help me, Thank you.

I think it could help you:

DB::table('messages')
    ->select('column_name', /* ... */, DB::raw('SUM(amount) AS cost'))
    ->where('phone_number', $request->phone_number) // if you want to filter
    ->groupBy('contact_phone')
    ->orderBy('cost', 'DESC')
    ->take(3)
    ->get()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM