Конвертировать Zend-запрос в laravel с условным использованием когда, затем по - PullRequest
0 голосов
/ 10 января 2019

Как конвертировать ниже Zend запрос в laravel. в основном я не могу понять, как использовать, когда условие в порядке. Кто-нибудь может мне помочь?

$term = $request->getParam('tag');
    $schoolName = strtolower(addslashes($term));

    $sqlSchoolList = "SELECT id, schoolName FROM privateschool 
                    WHERE LOWER(schoolName) LIKE '%" . $schoolName . "%'
                    UNION
                    SELECT IF(schoolType IN ('1','2','4'),IF(expireDate > CURRENT_DATE(),CONCAT('r-',id), CONCAT('r-a-',id)),CONCAT('r-t-',id)), schoolName  FROM school 
                    WHERE LOWER(schoolName) LIKE '%" . $schoolName . "%'


                    ORDER BY CASE WHEN schoolName LIKE '" . $schoolName . "%' THEN 0
                    WHEN schoolName LIKE '% %" . $schoolName . "% %' THEN 1
                    WHEN schoolName LIKE '%" . $schoolName . "' THEN 2
                    ELSE 3
                    END, LOCATE('" . $schoolName . "', schoolName), LENGTH(schoolName), schoolName";

    $stmt = $db->query($sqlSchoolList);
    $result = $stmt->fetchAll();

1 Ответ

0 голосов
/ 10 января 2019

Я нашел свое решение, я обновил свой запрос в Laravel, как показано ниже

$schoolName = $request->tag;
    $sqlSchool = \DB::table('school')->select( \DB::raw("IF(school_type IN ('1','2','4'),IF(expire_date > CURRENT_DATE(),CONCAT('r-',id), CONCAT('r-a-',id)),CONCAT('r-t-',id)), school_name"))
                    ->where('school_name','like',"%$schoolName%");

    $sqlSchoolPrivate = \DB::table('privateschool')->select('id', 'schoolName')
                    ->where("schoolName","like","%$schoolName%")
                    ->union($sqlSchool)
                    ->orderByRaw("CASE WHEN 'schoolName' LIKE '".$schoolName."%' THEN 0 WHEN schoolName LIKE '% %".$schoolName."% %' THEN 1 WHEN 'schoolName' LIKE '%".$schoolName."' THEN 2 ELSE 3 END, LOCATE('".$schoolName."', 'schoolName'), LENGTH('schoolName'), 'schoolName'")->get();
...