2016-02-09 2 views
1

Здравствуйте, предположим, у меня есть пользователей стол со следующими столбцами; first_name, last_name, электронная почта, роль, created_at.Фильтрация результатов GET в laravel

Теперь мой администратор хочет найти всех пользователей с определенным первым именем. Очевидно, что код будет лык это:

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

Теперь после того, что я хотел бы найти всех пользователей, которые имеют определенную last_name в течение предыдущих результатов.

Я искал всех пользователей, которые выполняют заданную роль в течение ранее внесенных результатов.

Затем я хотел бы найти всех пользователей, которые были , созданных на определенную дату или в течение определенного периода с использованием ранее полученных результатов.

Вышеприведенное является лишь примером того, что я хотел бы сделать. Я хотел бы сделать это, извлекая данные из моей базы данных только один раз (если возможно).

+0

Используйте методы коллекции, когда у вас есть первая коллекция из вашей базы данных. –

+0

Вы заглянули в поиск всех пользователей во что-то вроде DataTables и разрешение поиска на всех клиентах? – user3158900

+0

Это для каких-то фильтров? Например, выполните запрос по имени, ИЛИ Фамилия, или Имя И Фамилия? – enriqg9

ответ

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

+0

Спасибо, посмотрим. :) – user3718908

+0

Проблема, с которой я сталкиваюсь, я не могу сравнивать даты внутри коллекции, с таблицей, которую я бы использовал только DB: Raw – user3718908

+0

Кажется, я просто не делал это правильно. :) – user3718908

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(); 

С этим вы можете дать только первое имя, только фамилию или и то, и другое. Затем вы можете добавить дополнительные запросы, которые хотите выполнить.