【问题标题】:Laravel Eloquent how to use between operatorLaravel Eloquent 如何在操作符之间使用
【发布时间】:2015-01-01 00:54:50
【问题描述】:

我试图在 Eloquent 和 Laravel 中找到一种优雅的方式来表达

select * from UserTable where Age between X and Y

Eloquent 中是否有 between 运算符(我找不到)。

到目前为止,我得到的最接近的是像这样链接我的查询

$query->where(age, '>=', $ageFrom)
      ->where(age, '<=', $ageTo);

我也遇到了似乎可以工作的 whereRaw

$query->whereRaw('age BETWEEN ' . $ageFrom . ' AND ' . $ageTo . '');

是否有处理范围的实际 Eloquent 方式(不是原始方式)?

【问题讨论】:

    标签: php sql laravel laravel-4 eloquent


    【解决方案1】:
    $query->whereBetween('age', [$ageFrom, $ageTo]);
    

    看这里:http://laravel.com/docs/4.2/queries#selects

    仍然适用于 Laravel 5:https://laravel.com/docs/5.8/queries#where-clauses

    【讨论】:

    • 谢谢!我会仔细检查选择:)
    • 使用 eloquent 可以等同于:select * from UserTable where X between column1 and column2
    • @Brian 我认为你必须使用whereRaw(),以防 X 是绑定值。如果 X 是列名,则可以使用 -&gt;whereColumn('X', '&lt;=', 'column1')-&gt;where('X', '=&gt;', 'column2'),也可以写成单个 whereColumn([['X', '&lt;=', 'column1'], ['X', '=&gt;', 'column2']])
    • mb_strpos() 期望参数 1 是字符串,给定数组
    【解决方案2】:

    whereBetween 方法验证列的值是否介于两个值之间:

    $users = DB::table('users')->whereBetween('votes', [1, 100])->get();
    

    whereNotBetween 方法验证列的值是否位于两个值之外:

    $users = DB::table('users')->whereNotBetween('votes', [1, 100])->get();
    

    Laravel

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-15
      • 2018-11-07
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 2016-09-28
      相关资源
      最近更新 更多