lundi 20 mai 2019

How to optimize Larvel 5.6.39 Eloquent Query

I have question about reducing database connection in for every time retrieve data from DB. In maps i want to optimze this query. And i don't know how to do it. Please help. Thanks in advance. Here is the code.

$activity_result = Searchy::search('activities')
            ->fields('activity_title', 'activity_description', 'activity_address')
            ->query($request->get('search'))->getQuery()
            ->where('activity_datetime_to', '>=', $currentDatetime)
            ->having('relevance', '>', 50)->limit(10)->get();

        $activities_status= [];
        $activities = [];
        foreach ($activity_result as $activity) {
            $invitedOnActivity = $this->isInvitedOnActivity($activity->id, $activity->user_id, $authUser->id);
            if($invitedOnActivity == true && $activity->activity_privacy == 'invite_only')
            {
               if($activity->activity_privacy_visible == 0)
                {
                    $activity = Activity::where('id', $activity->id)->with('joins')->withCount('joins')->first();
                    // return response()->json(['q'=>$activity],200);
                } else if ($activity->activity_privacy_visible == 1 && in_array($activity->user_id, $userFriendIds))
                {
                    $activity = Activity::where('id', $activity->id)->where('activity_privacy_visible', 1)->with('joins')->withCount('joins')->first();
                    // return response()->json(['w'=>$activity],200);      
                } else {
                    continue;
                } 
            } else if(($invitedOnActivity == false && $activity->activity_privacy != 'invite_only') || $activity->user_id == $authUser->id)
            {
                if($activity->activity_privacy_visible == 0)
                {
                    $activity = Activity::where('id', $activity->id)->with('joins')->withCount('joins')->first();
                    // return response()->json(['q'=>$activity],200);
                } 
                else if ($activity->activity_privacy_visible == 1 && in_array($activity->user_id, $userFriendIds))
                {
                    $activity = Activity::where('id', $activity->id)->where('activity_privacy_visible', 1)->with('joins')->withCount('joins')->first();
                    // return response()->json(['w'=>$activity],200);      
                } 
                else {
                    continue;
                }
            } else {
                continue;
            } 

this query takes alot of time to execute.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire