Laravel查询:Where子句中的条件值[关闭]

问题描述 投票:1回答:1

我有这个问题

$timezone ='';

if(!empty(\Request::get('timezone')))
{
   $timezone = \Request::get('timezone')
}else
{
   $timezone = 'users.timezone'
}


$users = DB::table('users')
                ->where('timezone', $timezone)
                ->get();

如果标准为空或未定义,如何保持显示结果?

php laravel query-builder
1个回答
2
投票

使用when()方法:

DB::table('users')->when($request->timezone, function($q) {
        return $q->where('timezone', request()->timezone)
    })
    ->get();

when方法仅在第一个参数为true时执行给定的Closure。如果第一个参数为false,则不执行Closure

或者,您可以使用where闭包。

© www.soinside.com 2019 - 2024. All rights reserved.