Laravel:如何使用查询构建器添加where子句?

Cut*_*ish 9 php mysql sql query-builder laravel-4

我有这个查询,使用Laravel查询生成器:

$rows = DB::table('elements')->where('type', 1);
Run Code Online (Sandbox Code Playgroud)

这对应于:"SELECT*from elements WHERE type = 1"

现在,在某些情况下,我需要添加第二个创建查询的位置,如下所示:

SELECT * from elements WHERE type=1 AND lang='EN'
Run Code Online (Sandbox Code Playgroud)

使用经典php我会做类似的事情:

$sql = 'SELECT * from elements WHERE type=1';

if($var==true) $sql .= " AND lang='EN'";
Run Code Online (Sandbox Code Playgroud)

如何使用Laravel Query Builder执行此操作?

谢谢.

The*_*pha 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();
Run Code Online (Sandbox Code Playgroud)

另外,请检查此答案.

  • @ManuelPedrera,是的,但要有条件地添加`where`,你不能链,因为`OP`将在他添加另一个where子句之前检查一个条件. (4认同)