How to filter queries based on a column from the records? Suppose I have a column of types (0/1/2) in the users table. How to get it working like this?
$users = User::where(.. , ..)
->somethingXYZ({
if ($user->type === 1) {
$users->whereIn(.. , ..);
} elseif ($user->type === 2) {
$users->whereNotIn(.. , ,,);
}})->latest()->get();
I know I'm not making sense but I don't know how should I ask. If anyone can help me, I will be grateful.
CodePudding user response:
Are you looking for something like this ?
$query = User::where();
$query->when(request('type') == 1, function ($q) {
return $q->where('type',1);
});
$query->when(request('type') == 2, function ($q) {
return $q->where('type', 2);
});
$users = $query->get();
CodePudding user response:
$query = User::query();
$query->where('type', '=', $user->type);
if($user->type == 1 ) {
$query->where('column_1', '=', 'some value');
$query->whereIn('column_2', $someArray);
// ...
}
if($user->type == 2 ) {
$query->where('column_1', '!=', 'some value');
$query->whereNoIn('column_3', $someArray);
// ...
}
$users = $query->latest()->get();
