2015-08-29 133 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)