首页 > 解决方案 > laravel 查询生成器中的 SUBSTR 返回错误

问题描述

我在这里使用查询构建器和 mysql 函数有一个查询substr,我的问题是它返回一个错误A non-numeric value encountered。有人可以知道这是什么解决方案吗?谢谢。

我的数据是1-Course 101,我只想得到Course 101忽略1-数据库中的部分。

我试过的查询

我雄辩的询问

 $items2 = Course::where('school_id','=',Auth::user()->school_id)
      ->where(\DB::raw('SUBSTR(name, LOCATE('-', name) +  1)'))
      ->where('status','=',1) 
      ->get();

查询生成器

 $items3 = \DB::table('courses')
                  ->where('status', '=', 1)
                  ->where('school_id','=',Auth::user()->school_id)
                  ->where(\DB::raw('SUBSTR(name, LOCATE('-', name) +  1)'))
                  ->get();

它仍然返回错误A non-numeric value encountered

标签: phpmysqllaraveleloquent

解决方案


尝试这个。

问题是字符串连接。在问题中,DB:raw

\DB::raw('SUBSTR(name, LOCATE('-', name) +  1)')

'-'打破字符串。这就是问题所在。

 $items2 = Course::select(\DB::raw("SUBSTR(name, LOCATE('-', name) +  1)"))
           ->where('school_id','=',Auth::user()->school_id)
           ->where('status','=',1) 
           ->get();

或者

$items2 = Course::selectRaw("SUBSTR(name, LOCATE('-', name) +  1)")
               ->where('school_id','=',Auth::user()->school_id)
               ->where('status','=',1) 
               ->get();

推荐阅读