首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Laravel 8搜索查询中需要帮助

问在Laravel 8搜索查询中需要帮助
EN

Stack Overflow用户
提问于 2022-07-19 11:18:10
回答 1查看 39关注 0票数 0

我正在做一个搜索查询。我的要求是

员工可以使用多种语言和不同级别的语言搜索求职者。

例如:

员工录入

代码语言:javascript
复制
[
    ['name'=>'English', 'level'=>'fluant']
]

现在,我的要求是,每个求职者谁有英语的基本水平,高级和流利的语言水平被选中。

或者如果雇员进入

代码语言:javascript
复制
[
   ['name'=>'English', 'level'=>'advanced']
]

然后,所有具有英语和基础及高级水平的求职者都会被选中。

如何用Laravel 8编写select查询?

我正在使用这个查询

代码语言:javascript
复制
$levels = LanguageSkills::where('language_id', $lang[2])->where(function($q) {
                    $q->where('level', 'like', '%basic%')
                    ->orWhere('level', 'like', '%advanced%')
                    ->orwhere('level', 'like', '%fluent%');
                })->first();

但我有点搞不懂这个查询。是否有其他方法或可以用工作状态重写此查询。

EN

回答 1

Stack Overflow用户

发布于 2022-07-19 12:44:12

当涉及到SQL时,我可能会做如下的事情

代码语言:javascript
复制
SELECT first_name
FROM language_skills
WHERE language_id = < id >
  AND CASE
          WHEN level = 'basic' THEN 0
          WHEN level = 'advanced' THEN 1
          WHEN level = 'fluent' THEN 2
      END >= 1;

要把它放到你的Laravel模型中,您可以创建雄辩的范围和某种"LanguageSkillLevelEnum“,以将您的价值观保存在一个地方。

代码语言:javascript
复制
public function scopeLvlAtLeast($query, $lvl) 
{
    return $query->whereRaw(<<<SQL
      CASE
          WHEN level = 'basic' THEN 0
          WHEN level = 'advanced' THEN 1
          WHEN level = 'fluent' THEN 2
      END >= ?
SQL, $lvl);
}

public function scopeLvlAtMost($query, $lvl) 
{
    return $query->whereRaw(<<<SQL
      CASE
          WHEN level = 'basic' THEN 0
          WHEN level = 'advanced' THEN 1
          WHEN level = 'fluent' THEN 2
      END <= ?
SQL, $lvl);
}

(问号作为对SQL注入的保护。你可以读到更多关于它的这里)

那么要在您的示例中使用它,您应该

代码语言:javascript
复制
$levels = LanguageSkills::where('language_id', $lang[2])->lvlAtMost(1)->first();
$levels2 = LanguageSkills::where('language_id', $lang[2])->lvlAtLeast(2)->first();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73035947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档