veightar
veightar

Reputation: 63

checking for multiple values in a single column in laravel 5

So I'm not sure whether I asked the question well. I'm new to laravel and right now I'm building an application where I need to fetch data for a user if certain conditions are met. This is what I'm trying to achieve:

Select from database where userid = $user and userstatus = active or inactive. or pending. So all rows with the user id($user) and status(active, inactive and pending) will be returned. I tried doing:

  $users = DB::table('users')
    ->where('status', '=', 'active')
    ->orwhere('status', '=', 'inactive')
    ->orwhere('status', '=', 'pending')
    ->get();

This returned all the data in that particular table. What is the best way to go about this.

Upvotes: 2

Views: 7246

Answers (2)

rypskar
rypskar

Reputation: 2092

You have at least two options for how to do this you can use, including both so you have one for use in this case and one for general usage. Using a function in where creates a new block, so works like adding parentheses to your query

$users = DB::table('users')
  ->where('id', $user)
  ->where(function($query) {
  $query->where('status', 'active')
    ->orWhere('status', 'inactive')
    ->orWhere('status', 'pending');
})->get();

or

$users = DB::table('users')->where('id', $user)->whereIn('status', ['active', 'inactive', 'pending'])->get();

Upvotes: 6

tyro
tyro

Reputation: 1428

You can do it as:

$users = DB::table('users')
    ->where('userid', $userid)
    ->whereIn('status',['active', 'inactive','pending'])
    ->get();

Upvotes: 2

Related Questions