orderBy('view_name','asc') ->where('module_name',$moduleName) ->where(function($subquery){ $subquery->where(function($q){ $q->where('is_public',1)->where('is_accepted',1); }); $subquery->orWhere(function($q){ $q->where('is_public',0)->where('owner_id',\Auth::user()->id); }); }); $result = [ 'public' => [], 'private' => [] ]; foreach ($records->get() as $record){ if($record->is_public){ $result['public'][] = $record; }else{ $result['private'][] = $record; } } return $result; } public function getSingleView($moduleName,$viewId){ } }