Laravel 5查询`LIKE`问题

时间:2015-08-29 11:52:19

标签: laravel laravel-5 eloquent

我有一个带有前缀列的special_number表。该列包含022021等数据。我有一个号码0216627363021。如何使用LIKE关键字匹配列以获取行。

$rate = Special::where('user_id',$user_id)
            ->where(DB::raw("prefix LIKE $number"))
            ->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-1)"))
            ->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-2)"))
            ->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-3)"))
            ->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-4)"))
            ->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-5)"))
            ->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-6)"))
            ->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-7)"))
            ->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-8)"))
            ->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-9)"))
            ->orWhere(DB::raw("prefix LIKE SUBSTR($number,1,-10)"))
            ->first();

但它返回NULL。问题出在哪儿?谢谢。

1 个答案:

答案 0 :(得分:0)

如果您想匹配值的一部分,请使用通配符like

$rate = Special::where('user_id', $user_id)
        ->where('prefix', 'like', '%' . $number . '%')
        ->first();

这将在任何点匹配前缀内的字符串。如果您想获得以数字开头的前缀值的结果,请使用:

->where('prefix', 'like', $number . '%')

或者,如果要匹配以该数字结尾的前缀值,请使用:

->where('prefix', 'like', '%' . $number)