首页 > 解决方案 > 如何在 laravel 中使用 postgresql 的 split_part?

问题描述

我想在 laravel 中使用split_part。我的代码就像,

$results = DB::table('zaiko')
               ->where('soukobango',$souko_bango_for_joining)
               ->join('syouhin1','zaiko.syouhinbango','=','syouhin1.bango')
               ->where('syouhin1.isphoto','is distinct from','1')
               ->select('syouhin1.bango',
                    'syouhin1.kokyakusyouhinbango',
                    'syouhin1.jouhou',
                    'syouhin1.tokuchou',
                    "SPLIT_PART('zaiko.datachar02', '|', 1) as test1")
              ->get();

但是,它给了我以下错误。

未定义的表:7 错误:缺少表“SPLIT_PART('zaiko”第 1 行:...ngo”,“syouhin1”。“jouhou”,“syouhin1”。“tokuchou”,“SPLIT_PAR... ^ (SQL: select "syouhin1"."bango", "syouhin1"."kokyakusyouhinbango", "syouhin1"."jouhou", "syouhin1"."tokuchou", "SPLIT_PART('zaiko"."datachar02', '|' , 1)" as "test1" from "zaiko" inner join "syouhin1" on "zaiko"."syouhinbango" = "syouhin1"."bango" 其中 "soukobango" = 1 和 "syouhin1"."isphoto" 不同于1)

但是,如果我删除带有 SPLIT_PART 的行,那么它会按预期工作。

标签: phplaravelpostgresql

解决方案


尝试使用原始选择:

->select(DB::raw("syouhin1.bango,
                  syouhin1.kokyakusyouhinbango,
                  syouhin1.jouhou,
                  syouhin1.tokuchou,
                  SPLIT_PART(zaiko.datachar02, '|', 1) AS test1"))

推荐阅读