Laravel如何使用querybuilder从两列进行组合concat

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel如何使用querybuilder从两列进行组合concat相关的知识,希望对你有一定的参考价值。

我有一个参数projectname,它接受基于数据库列的任何字符串。我想要的是当我搜索类似BEDOK的关键字时,它向我显示了数据库中各列的简要列表。像这样BEDOK-20BEDOK-22

我的数据库是这样的enter image description here

我尝试过的控制器代码

    public function getNames(Request $request)
        $result =  DB::connection('mysql2')
                    ->table('xp_pn_resale')
                    ->select('town')
                    ->whereRaw(DB::raw("CONCAT(town, ' ', street_name,'',block,'')LIKE '%$request->projectname%' "))
                    ->limit($request->limit)   
                    ->get();
                    // ->toSql();

        return response()->json($result);            
    

我得到了这样的回复

"town": "BEDOK"
,

"town": "BEDOK"
,

"town": "BEDOK"
,
...

我想要的是这样

[
"town": "BEDOK-44"
,

"town": "BEDOK-540"
,

"town": "BEDOK-702"
,
...
答案

您只需要这样选择:

->selectRaw('CONCAT(town, '-', block) AS town')

以上是关于Laravel如何使用querybuilder从两列进行组合concat的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 6,MYSQL - 如何使用 Laravel Querybuilder 或 Model Eloquent 将子查询与 GroupBY 左连接?

Laravel 如何获取数组而不是 QueryBuilder select() 语句的对象?

Laravel QueryBuilder 中的 Postgres 函数 WITH

Laravel Eloquent 相当于 QueryBuilder 查询

Laravel:从数据库中检索模型

Laravel QueryBuilder - 相同查询的 `where()` 和 `whereRaw()` 结果不同