Query lazy loading imrpovements

This commit is contained in:
David Bomba 2022-04-11 17:45:37 +10:00
parent 485fea03c7
commit fabf8e0bae
6 changed files with 37 additions and 15 deletions

View File

@ -218,7 +218,7 @@ class BaseController extends Controller
$query->with(
[
'company' => function ($query) use ($updated_at, $user) {
$query->whereNotNull('updated_at')->with('documents')->with('users');
$query->whereNotNull('updated_at')->with('documents','users');
},
'company.clients' => function ($query) use ($updated_at, $user) {
$query->where('clients.updated_at', '>=', $updated_at)->with('contacts.company', 'gateway_tokens', 'documents');
@ -392,7 +392,7 @@ class BaseController extends Controller
$query->with(
[
'company' => function ($query) use ($created_at, $user) {
$query->whereNotNull('created_at')->with('documents');
$query->whereNotNull('created_at')->with('documents','users');
},
'company.designs'=> function ($query) use ($created_at, $user) {
$query->where('created_at', '>=', $created_at)->with('company');
@ -466,7 +466,7 @@ class BaseController extends Controller
$query->with(
[
'company' => function ($query) use ($created_at, $user) {
$query->whereNotNull('created_at')->with('documents');
$query->whereNotNull('created_at')->with('documents','users');
},
'company.clients' => function ($query) use ($created_at, $user) {
$query->where('clients.created_at', '>=', $created_at)->with('contacts.company', 'gateway_tokens', 'documents');
@ -500,9 +500,6 @@ class BaseController extends Controller
},
'company.groups' => function ($query) use ($created_at, $user) {
$query->where('created_at', '>=', $created_at)->with('documents');
// if(!$user->isAdmin())
// $query->where('group_settings.user_id', $user->id);
},
'company.invoices'=> function ($query) use ($created_at, $user) {
$query->where('created_at', '>=', $created_at)->with('invitations', 'documents');
@ -583,13 +580,30 @@ class BaseController extends Controller
$query->where('activities.user_id', $user->id);
},
'company.webhooks'=> function ($query) use($user) {
if(!$user->isAdmin())
$query->where('webhooks.user_id', $user->id);
},
'company.tokens'=> function ($query) use($user) {
$query->where('company_tokens.user_id', $user->id);
},
'company.system_logs',
'company.subscriptions'=> function ($query) use($created_at, $user) {
$query->where('created_at', '>=', $created_at);
if(!$user->isAdmin())
$query->where('subscriptions.user_id', $user->id);
}
},
'company.recurring_expenses'=> function ($query) use ($created_at, $user) {
$query->where('created_at', '>=', $created_at)->with('documents');
if(!$user->hasPermission('view_recurring_expense'))
$query->where('recurring_expenses.user_id', $user->id)->orWhere('recurring_expenses.assigned_user_id', $user->id);
},
]
);

View File

@ -35,9 +35,9 @@ class QueryLogging
{
// Enable query logging for development
if (!Ninja::isHosted() || !config('beacon.enabled')) {
return $next($request);
}
// if (!Ninja::isHosted() || !config('beacon.enabled')) {
// return $next($request);
// }
$timeStart = microtime(true);
DB::enableQueryLog();
@ -53,10 +53,10 @@ class QueryLogging
// info("Query count = {$count}");
if($count > 175){
// if($count > 175){
nlog("Query count = {$count}");
nlog($queries);
}
// }
$ip = '';

View File

@ -52,6 +52,8 @@ class CompanyUser extends Pivot
protected $touches = ['user'];
protected $with = ['user','account'];
public function getEntityType()
{
return self::class;

View File

@ -25,6 +25,7 @@ use Illuminate\Support\Facades\Queue;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
use Illuminate\Database\Eloquent\Model;
use Livewire\Livewire;
class AppServiceProvider extends ServiceProvider
@ -69,6 +70,11 @@ class AppServiceProvider extends ServiceProvider
app()->instance(TruthSource::class, new TruthSource());
Model::preventLazyLoading(
!$this->app->isProduction()
);
}
/**

View File

@ -79,7 +79,7 @@ class CompanyUserTransformer extends EntityTransformer
public function includeToken(CompanyUser $company_user)
{
$token = $company_user->tokens->where('company_id', $company_user->company_id)->where('user_id', $company_user->user_id)->first();
$token = $company_user->tokens()->where('company_id', $company_user->company_id)->where('user_id', $company_user->user_id)->first();
$transformer = new CompanyTokenTransformer($this->serializer);

View File

@ -32,7 +32,7 @@ trait UserNotifies
$notifiable_methods = [];
$notifications = $company_user->notifications;
if ($company_user->company->is_disabled && is_array($notifications->email) || $company_user->trashed() || $company_user->user->trashed()) {
if ($invitation->company->is_disabled && is_array($notifications->email) || $company_user->trashed() || $company_user->user->trashed()) {
return [];
}
@ -56,7 +56,7 @@ trait UserNotifies
$notifiable_methods = [];
$notifications = $company_user->notifications;
if ($company_user->company->is_disabled || ! $notifications || $company_user->trashed() || $company_user->user->trashed()) {
if ($entity->company->is_disabled || ! $notifications || $company_user->trashed() || $company_user->user->trashed()) {
return [];
}