如何在 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在数据表中使用查询进行多重过滤