【问题标题】:Laravel: how to add where clause using query builder?Laravel:如何使用查询生成器添加 where 子句?
【发布时间】:2013-12-09 10:01:10
【问题描述】:

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

$rows = DB::table('elements')->where('type', 1);

对应于:“SELECT * from elements WHERE type=1”

现在,在某些情况下,我需要添加第二个 Where 来创建这样的查询:

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 查询生成器做到这一点?

谢谢。

【问题讨论】:

    标签: php mysql sql laravel-4 query-builder


    【解决方案1】:

    你可以试试这样的

    $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

    【讨论】:

    • 他们也可以被锁住:$query->where('some_field', 'some_value')->where('type', 1);
    • @ManuelPedrera,是的,但是要有条件地添加 where,你不能链接,因为 OP 将在他添加另一个 where 子句之前检查一个条件。
    • @RCV 是的,这就是我发布评论以展开的原因,而不是另一个答案。
    【解决方案2】:
    $userId = Auth::id();
    $data['user_list'] =DB::table('users')->
    select('name')->
    where('id','!=',$userId)->
    where('is_admin','!=','1')->
    get();
    

    就像你使用多个 where 子句:)

    【讨论】:

    • 欢迎来到 Stack Overflow!感谢您提供此代码 sn-p,它可能会提供一些即时帮助。一个正确的解释would greatly improve 其教育价值通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有类似但不相同的问题的读者更有用。请edit您的答案添加解释,并说明适用的限制和假设。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2021-06-26
    相关资源
    最近更新 更多