2016-11-08 2 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) -> где ('email', 'LIKE', '%'. $ Searchname. '%') -> orwhere ('request_url', ' LIKE ','% '. $ Searchname.'% ') -> последняя (' id ') -> paginate ($ size); Угадайте, что вы использовали orWhere condition в неположенном месте, если это работает –

ответ

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); 
Смежные вопросы