2017-02-28 249 views
0

我目前在我的網站上有一個搜索功能,我需要它來搜索3個字段 - appid,mobilenumber,email。Laravel搜索多個字段

現在,用戶在搜索框中輸入數據後,它將搜索所有3個數據,但它不起作用。

使用GET收集數據。

這裏是我的查詢

http://www.example.com?id=1&searchall=07853637362

$mobile = INPUT::get('searchall'); 
$email = INPUT::get('searchall'); 
$appid = INPUT::get('searchall'); 

$data = DB::table('leads') 
->when($mobile, function($query) use ($mobile){ 
    return $query->where('MobilePhone', $mobile); 
}) 
->when($email, function($query) use ($email){ 
    return $query->where('Email', $email); 
}) 
->when($appid, function($query) use ($appid){ 
    return $query->where('AppID', $appid); 
}) 
->get(); 

所以我需要它來搜索每個字段,直到找到正確的字段值。

+0

考慮編寫一些手動SQL不時,這會讓你知道有OR子句的東西:) – Borjante

回答

2
$mobile = INPUT::get('searchall'); 
$email = INPUT::get('searchall'); 
$appid = INPUT::get('searchall'); 

$data = DB::table('leads') 
->when($mobile, function($query) use ($mobile){ 
       return $query->orWhere('MobilePhone', $mobile); 
      }) 

      ->when($email, function($query) use ($email){ 
       return $query->orWhere('Email', $email); 
      }) 

      ->when($appid, function($query) use ($appid){ 
       return $query->orWhere('AppID', $appid); 
      })->get(); 
0

要搜索數據與like

->when($mobile, function($query) use ($mobile){ 
    return $query->where('MobilePhone', 'like', '%'. $mobile . '%'); 
}) 

嘗試實際搜索每個字段,使用orWhere

$keywords = Input::get('searchall'); 
$data = DB::table('leads') 
->where('mobilephone', '=', $keywords) 
->orWhere('email', '=', $keywords) 
->orWhere('AppID', '=', $keywords) 
->get(); 
0

我不明白你爲什麼使用3個變量的用戶需要相同的值,所以以下是簡化版本:

$searched = Input::get('searchall'); 

$matched = DB::table('leads') 
->where('MobilePhone', $searched) 
->orWhere('Email', $searched) 
->orWhere('AppID', $searched) 
->get();