首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从返回的结果中为选定的列定义自定义键名

从返回的结果中为选定的列定义自定义键名
EN

Stack Overflow用户
提问于 2015-08-12 18:20:38
回答 1查看 32关注 0票数 0

我有这样一个有说服力的范围搜索查询,它接受这样的输入参数:

代码语言:javascript
复制
"ECEC 301 Advanced Programming for Engineers Lab",
"ECEC 301 Advanced Programming for Engineers Lecture",
"ECEC 302 Digital Systems Projects Lab",
"ECEC 471 Introduction to VLSI Design Lab"

使用此模型:

代码语言:javascript
复制
public function scopeSearchWithType($query, $searchTerm) {
    return $query->where(
        DB::raw("subject_code || ' ' ||  course_no || ' ' || course_title || ' ' || instr_type"),
        'like',
        '%' . $searchTerm . '%'
    )->select(
        $searchTerm,
        'day',
        'time',
        'crn'
    );
}

如您所见,每个输入字符串实际上是四个不同列的组合。

不管怎么说。当我运行此查询时,如下所示:

代码语言:javascript
复制
       "ECEC 471 Introduction to VLSI Design Lab": "ECEC 471 Introduction to VLSI Design Lab",
       day: "W",
       time: "09:00 am - 10:50 am",
       crn: "12506"
   }

如您所见,$searchQuery的键是value的名称。我想给密钥分配一个自定义名称,比如course_name

我试过从class => $searchTermclass as $searchTerm的所有东西,但它们都没有用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-12 18:37:19

可以将数组传递到范围查询的$value中。这将允许您定义一个$search['term']和一个$search['column'],以便您可以动态地重命名该列。

代码语言:javascript
复制
public function scopeSearchWithType($query, $search) {
    return $query->where(
        DB::raw("subject_code || ' ' ||  course_no || ' ' || course_title || ' ' || instr_type"),
        'like',
        '%' . $search['term'] . '%'
    )->select(
        $search['column'] . 'as' . $search['term'],
        'day',
        'time',
        'crn'
    );
}

但是,我要指出的是,您将无法结束雄辩的查询,因为需要在query中返回QueryBuilder对象。在本例中,您将返回一个数组。您将无法再次在此作用域查询之上链接方法,这只是一个预先警告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31972644

复制
相关文章

相似问题

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