如何在 switch 语句中使用 laravel 模型运行多个 Where 子句

Posted

技术标签:

【中文标题】如何在 switch 语句中使用 laravel 模型运行多个 Where 子句【英文标题】:How to run multiple Where clauses using laravel models in a switch statement 【发布时间】:2014-11-19 15:27:52 【问题描述】:

我有一个switch 语句,我想根据case clauses 查询我的Database;我想使用 Where clauses 来实现我的目标。我想根据满足的条件逐步将 where 子句添加到我的 User 模型中。 示例:

switch($key)
    case 'province':
        //User::where('province', '=', $value);
        break;
    case 'city':
        //User::where('city', '=', $value);
        break;
    case 'specialty':
        //User::where('specialty', '=', $value);
        break;
    default:
        break;

我想使用 Eloquent 模型 而不是 Query Builder。但我不知道该怎么做。

【问题讨论】:

【参考方案1】:

这就是你的做法:

// instantiate the query
$query = User::query();

// add wheres
switch / foreach or whatever

   $query->where(...);


// other methods if needed
$query->orderBy(..)

// execute
$users = $query->get();

【讨论】:

【参考方案2】:

如果您想逐步添加子句,循环会比 switch 语句更好。假设您的信息来自用户输入,我会这样做:

$input = Input::only(['province', 'city', 'speciality']);
$user = new User;

foreach($input as $key => $value) 
     if(!empty($value)) 
         $user = $user->where($key, $value);
     


$users = $user->get();

return View::make('foo', compact('users'));

【讨论】:

所以如果我在外面初始化一个新的 User 对象并稍后添加 where 子句,它可以吗?

以上是关于如何在 switch 语句中使用 laravel 模型运行多个 Where 子句的主要内容,如果未能解决你的问题,请参考以下文章

laravel如何使用switch在数据表中使用查询进行多重过滤

laravel 视图流程控制,if switch for loop

如何在 switch 语句中使用大于或等于

如何在 React 组件中使用 switch 语句?

如何在 switch 语句中使用 instanceof

如何在准备中的 switch 语句中使用可选绑定(segue :)