2015-08-29 61 views
0

我有一个special_number表与前缀列。该列包含022021等数据。我有一个号码0216627363021。我如何使用LIKE关键字匹配列以获取该行。Laravel 5查询`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。哪里有问题?谢谢。

回答

0

如果你想匹配的价值的一部分只是使用通配符与like

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

这将在任何点前缀里面的字符串相匹配。如果你想获得与数量开始使用前缀值结果:

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

或者,如果你想匹配与该号码使用结束前缀值:

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