有条件地使用when,然后按顺序将Zend查询转换为laravel

时间:2019-01-10 12:05:29

标签: laravel-query-builder

如何将以下Zend查询转换为laravel。主要是我不明白如何在orderBy中使用条件。谁能帮我吗?

$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 :(得分:0)

我找到了解决方案,我在Laravel中更新了查询,如下所示

(a^b)^b == a^(b^b) == a^0 == a