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