2016-11-08 131 views
2

我遇到困難,在laravel 5.1編寫此查詢,如何寫laravel這個查詢5

select * from `host_requests` where `host_id` = 5 and (`email` LIKE "%v%" or `request_url` LIKE "%v%") 

此查詢的目的是獲取了與HOST_ID = 5,也電子郵件相關的記錄和request_url是可選的,如果它們被設置,那麼應該使用LIKE子句。 我寫的查詢中laravel這樣

$searchname = "v"; 
$hostid = "5"; 
$data = HostRequest::where('email', 'LIKE', '%' . $searchname . '%') 
       ->where('host_id', $hostid) 
       ->orwhere('request_url', 'LIKE', '%' . $searchname . '%') 
       ->latest('id') 
       ->paginate($size); 

它獲取的是還沒有與HOST_ID = 5

任何幫助是非常appreciated..Thanks相關聯的所有記錄

+0

$ searchname =「v」; $ hostid =「5」; $ data = HostRequest :: where('host_id',$ hostid) - > where('email','LIKE','%'。$ searchname。'%') - > orwhere('request_url',' LIKE','%'。$ searchname。'%') - > latest('id') - > paginate($ size); 猜你用過或有條件在錯誤的地方,如果這項工作 –

回答

4

你應該使用where()與封這樣的:

$data = HostRequest::where('host_id', $hostid) 
       ->where(function($q) use($searchname) { 
        $q->where('email', 'like', '%'.$searchname.'%') 
        ->orWhere('request_url', 'like', '%'.$searchname.'%'); 
       })->orderBy('id', 'desc') 
       ->paginate($size); 
+0

有一個語法錯誤在「}) - > orderBy('id','desc')」...你可以請檢查它... – Aamir

+1

' - > orWhere('request_url','like','%'。$ searchname。'%');'add';'在這行之後。 –

+1

非常感謝... – Aamir

0

試試這個代碼:

$data = HostRequest::where(function ($query) use ($searchname) { 
    $query->orwhere('email', 'like', '%'.$searchname.'%') 
     ->orWhere('request_url', 'like', '%'.$searchname.'%'); 
    }) 
    ->where('host_id', $hostid) 
    ->latest('host_id') 
    ->paginate($size);