我有这样一个有说服力的范围搜索查询,它接受这样的输入参数:
"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"使用此模型:
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'
);
}如您所见,每个输入字符串实际上是四个不同列的组合。
不管怎么说。当我运行此查询时,如下所示:
"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 => $searchTerm到class as $searchTerm的所有东西,但它们都没有用。
发布于 2015-08-12 18:37:19
可以将数组传递到范围查询的$value中。这将允许您定义一个$search['term']和一个$search['column'],以便您可以动态地重命名该列。
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对象。在本例中,您将返回一个数组。您将无法再次在此作用域查询之上链接方法,这只是一个预先警告。
https://stackoverflow.com/questions/31972644
复制相似问题