2015-09-26 75 views
0

我喜欢这个 -转换SQL到Laravel查询生成器有复杂和OR

SELECT * FROM subscribers_lists 
    WHERE Country='Germany' 
    AND (City='Berlin' OR name LIKE '%Mün%'); 

我想将其转换为Laravel查询生成器的查询的查询。所以,我所做的是 -

DB::table('Customers') 
    ->where('subscribers_lists.Country', '=', $user_country) 
    ->or_where('subscribers_lists.City', '=', $user_city) 
    ->or_where('subscribers_lists.name', 'like', '%' . $searchParameter . '%'); 

但它不能正常工作。有什么建议吗?

感谢您的帮助。

回答

1

您可以使用Closure创建复杂部分。

DB::table('subscribers_lists') 
    ->where('subscribers_lists.Country', '=', $user_country) 
    ->where(function($query) use ($user_city, $searchParameter) { 
     $query->where('subscribers_lists.City', '=', $user_city) 
       ->orWhere('subscribers_lists.name', 'like', '%' . $searchParameter . '%'); 
    }); 

您可以在文档中阅读更多关于高级查询