过滤GET会导致laravel

时间:2016-02-09 20:46:12

标签: laravel laravel-5 eloquent

你好假设我有一个带有以下列的用户表; first_name last_name 电子邮件角色 created_at

现在我的管理员希望搜索具有特定first_name的所有用户 显然代码是lyk:

$users = User::select('id', 'first_name', 'last_name', 'email', 'role', 'created_at')->where('first_name', 'smith')->get();

此后,我想在之前的搜索结果中搜索具有特定last_name 的所有用户。

然后,我想在之前返回的结果中搜索具有特定角色的所有用户。

然后,我想使用之前返回的结果搜索在特定日期或特定时间段内创建的所有用户。

以上只是我想做的一个例子。 我想通过从我的数据库中获取数据一次(如果可能的话)来做到这一点。

2 个答案:

答案 0 :(得分:1)

从数据库获得第一个集合后,使用Collection方法。

$users = User::where('first_name', 'smith')->get();
// You don't have to use select unless you don't want to get all columns from your table. 

$specific_last_name = $users ->where('last_name', 'john');

查看我的收集方法:https://laravel.com/docs/5.2/collections#available-methods

答案 1 :(得分:0)

如果您想通过名字或姓氏进行查询,您只需执行一次查询,例如:

$request = Request::all();

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

// Query by First Name
if($request->has('first_name')) {
  $query->where('first_name', 'John');
}

// Query by Last Name
if($request->has('last_name')) {
  $query->where('last_name', 'Doe');
}

// Get All the results
$users = $query->get();

有了这个,您可以只提供名字,只提供姓氏或两者。然后,您可以添加要执行的其他查询。