2016-04-14 5 views
1

У меня есть следующие sql-запросы в моем приложении.laravel Оптимизация запросов MySQL

$defaultGoal = DB::table("goals") 
-> where("activitiesID", "=", $this->activityID) 
-> where("usersID", "=", $userID) 
-> pluck("goal"); 

$defaultGoalPoints = DB::table("goals") 
-> where("activitiesID", "=", $this->activityID) 
-> where("usersID", "=", $userID) 
-> pluck("goalpoints"); 

$defaultPoints = DB::table("goals") 
-> where("activitiesID", "=", $this->activityID) 
-> where("usersID", "=", $userID) 
-> pluck("points"); 

Каждый запрос возвращает массив. Есть ли способ объединить все эти запросы в один, который вернет те же массивы для $defaultPoints, $defaultGoalPoints и $defaultGoal.

+0

Если цель состоит в том, чтобы уменьшить количество запросов, вы пишете, что о просто используя -> get(), чтобы извлечь все записи, а затем с помощью php вытащить нужные данные в массивы? (У Laravel может быть более короткий способ сделать это, хотя, и я позволю кому-то говорить, если они знают об этом.) – Atlas

ответ

1

Вы можете использовать select, чтобы получить только то, что вам нужно:

$defaults = DB::table("goals") 
->select('goal', 'goalpoints', 'points') 
->where("activitiesID", "=", $this->activityID) 
->where("usersID", "=", $userID) 
->get(); 

Надеется, что это помогает ...

Смежные вопросы