2016-03-11 3 views
0

Нужна помощь по этому простенькому коду, какой код следует заменить на $users = User::all();, чтобы я мог условно связать метод области и развернуть его в конце?Laravel 5 eloquent условный запрос цепочки

Я попытался инициировать объект User с $users = new User(); и есть ошибка, пытаясь получить свойство ошибки, отличной от объекта, при использовании на VIEW.

public function index() 
{ 
    // user search 

    $name = $this->request->name; 
    $email = $this->request->email; 

    $users = User::all(); 

    if (!empty($name)) { 
     $users->name($name); 
    } 

    if (!empty($email)) { 
     $users->email($email); 
    } 

    $users->paginate(5); 

    return view('admin.users.index',compact('users')); 
} 

Заранее спасибо

+0

Вы пытаетесь представить всех пользователей? –

+0

Я хочу фильтровать пользователя по имени или электронной почте, когда администратор нажимает кнопку поиска – cyberfly

ответ

1

Попробуйте это:

$users = new User; 
if(!empty($name)) 
    $users->whereName($name); 
if(!empty($email)) 
    $users->whereEmail($email); 
$users =$users->paginate(5); 
+0

Сколько пользователей будет иметь одинаковое имя и адрес электронной почты? –

+0

Спасибо, я попробую позже и дам вам знать результат – cyberfly

+0

Привет, я нашел правильный ответ по следующей ссылке http://stackoverflow.com/a/21739314/417899 – cyberfly

1
$users = DB::table('users'); 

$users = empty($email) ? $users->paginate(5) : $users->whereEmail($email)->paginate(5); 

Вам не нужно, чтобы проверить имя, если все пользователи имеют электронную почту, потому что электронная почта всегда уникален. Этот способ сделать задачу быстрее и удобнее.

В случае, если вам нужно проверить name или что-нибудь еще, вы можете использовать это:

$users = DB::table('users'); 

$users = empty($email) ? $users : $users->whereEmail($email); 
$users = empty($name) ? $users : $users->whereName($name); 

$users = $users->paginate(5); 
+0

Спасибо, попробуем позже. Я на самом деле хочу указать вариант поиска по имени или администратору, или и то, и другое. На самом деле вопрос является просто примером для более сложного фильтра, такого как Property filter by type и square feet. – cyberfly

+0

Я обновил свой пост, поэтому вы можете добавить гораздо больше WHEREs к вашему запросу. –

+0

Привет, я нашел правильный ответ по следующей ссылке http://stackoverflow.com/a/21739314/417899 – cyberfly

Смежные вопросы