Order by query with CASE Statement in Mysql / Laravel

$data = $model->newQuery()->with(['customerkyc'])

        ->leftJoin('customer_kyc', 'customer.id', '=', 'customer_kyc.customer_id')

        ->orderByRaw('

            CASE 

                WHEN customer_kyc.is_verified = 0 THEN 1

                WHEN customer_kyc.is_verified IS NULL THEN 3

                ELSE 2

            END,

            customer_kyc.created_at ASC

        ')

        ->select('customer.*');

    return $data;


SELECT customer.*

FROM customer

LEFT JOIN customer_kyc ON customer.id = customer_kyc.customer_id

ORDER BY

    CASE 

        WHEN customer_kyc.is_verified = 0 THEN 1

        WHEN customer_kyc.is_verified IS NULL THEN 3

        ELSE 2

    END,

    customer_kyc.created_at ASC;

No comments:

Post a Comment

Pages