我有使用Laravel查询构建器进行此查询:
$rows = DB::table('elements')->where('type', 1);
对应于:“SELECT * from elements WHERE type = 1”
现在,在某些情况下,我需要添加第二个创建查询的位置:
SELECT * from elements WHERE type=1 AND lang='EN'
使用经典php
我会做类似的事情:
$sql = 'SELECT * from elements WHERE type=1';
if($var==true) $sql .= " AND lang='EN'";
如何使用Laravel Query Builder进行此操作?
谢谢。
答案 0 :(得分:28)
您可以尝试这样的事情
$query = DB::table('elements');
$query->where('some_field', 'some_value');
// Conditionally add another where
if($type) $query->where('type', 1);
// Conditionally add another where
if($lang) $query->where('lang', 'EN');
$rows = $query->get();
另外,请检查this answer。
答案 1 :(得分:0)
$userId = Auth::id();
$data['user_list'] =DB::table('users')->
select('name')->
where('id','!=',$userId)->
where('is_admin','!=','1')->
get();
就像你使用多个where子句:)