mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-04 05:24:35 -04:00
Query lazy loading imrpovements
This commit is contained in:
parent
485fea03c7
commit
fabf8e0bae
@ -218,7 +218,7 @@ class BaseController extends Controller
|
|||||||
$query->with(
|
$query->with(
|
||||||
[
|
[
|
||||||
'company' => function ($query) use ($updated_at, $user) {
|
'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) {
|
'company.clients' => function ($query) use ($updated_at, $user) {
|
||||||
$query->where('clients.updated_at', '>=', $updated_at)->with('contacts.company', 'gateway_tokens', 'documents');
|
$query->where('clients.updated_at', '>=', $updated_at)->with('contacts.company', 'gateway_tokens', 'documents');
|
||||||
@ -392,7 +392,7 @@ class BaseController extends Controller
|
|||||||
$query->with(
|
$query->with(
|
||||||
[
|
[
|
||||||
'company' => function ($query) use ($created_at, $user) {
|
'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) {
|
'company.designs'=> function ($query) use ($created_at, $user) {
|
||||||
$query->where('created_at', '>=', $created_at)->with('company');
|
$query->where('created_at', '>=', $created_at)->with('company');
|
||||||
@ -466,7 +466,7 @@ class BaseController extends Controller
|
|||||||
$query->with(
|
$query->with(
|
||||||
[
|
[
|
||||||
'company' => function ($query) use ($created_at, $user) {
|
'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) {
|
'company.clients' => function ($query) use ($created_at, $user) {
|
||||||
$query->where('clients.created_at', '>=', $created_at)->with('contacts.company', 'gateway_tokens', 'documents');
|
$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) {
|
'company.groups' => function ($query) use ($created_at, $user) {
|
||||||
$query->where('created_at', '>=', $created_at)->with('documents');
|
$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) {
|
'company.invoices'=> function ($query) use ($created_at, $user) {
|
||||||
$query->where('created_at', '>=', $created_at)->with('invitations', 'documents');
|
$query->where('created_at', '>=', $created_at)->with('invitations', 'documents');
|
||||||
@ -583,13 +580,30 @@ class BaseController extends Controller
|
|||||||
$query->where('activities.user_id', $user->id);
|
$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) {
|
'company.subscriptions'=> function ($query) use($created_at, $user) {
|
||||||
$query->where('created_at', '>=', $created_at);
|
$query->where('created_at', '>=', $created_at);
|
||||||
|
|
||||||
if(!$user->isAdmin())
|
if(!$user->isAdmin())
|
||||||
$query->where('subscriptions.user_id', $user->id);
|
$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);
|
||||||
|
|
||||||
|
},
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -35,9 +35,9 @@ class QueryLogging
|
|||||||
{
|
{
|
||||||
|
|
||||||
// Enable query logging for development
|
// Enable query logging for development
|
||||||
if (!Ninja::isHosted() || !config('beacon.enabled')) {
|
// if (!Ninja::isHosted() || !config('beacon.enabled')) {
|
||||||
return $next($request);
|
// return $next($request);
|
||||||
}
|
// }
|
||||||
|
|
||||||
$timeStart = microtime(true);
|
$timeStart = microtime(true);
|
||||||
DB::enableQueryLog();
|
DB::enableQueryLog();
|
||||||
@ -53,10 +53,10 @@ class QueryLogging
|
|||||||
|
|
||||||
// info("Query count = {$count}");
|
// info("Query count = {$count}");
|
||||||
|
|
||||||
if($count > 175){
|
// if($count > 175){
|
||||||
nlog("Query count = {$count}");
|
nlog("Query count = {$count}");
|
||||||
nlog($queries);
|
nlog($queries);
|
||||||
}
|
// }
|
||||||
|
|
||||||
$ip = '';
|
$ip = '';
|
||||||
|
|
||||||
|
@ -52,6 +52,8 @@ class CompanyUser extends Pivot
|
|||||||
|
|
||||||
protected $touches = ['user'];
|
protected $touches = ['user'];
|
||||||
|
|
||||||
|
protected $with = ['user','account'];
|
||||||
|
|
||||||
public function getEntityType()
|
public function getEntityType()
|
||||||
{
|
{
|
||||||
return self::class;
|
return self::class;
|
||||||
|
@ -25,6 +25,7 @@ use Illuminate\Support\Facades\Queue;
|
|||||||
use Illuminate\Support\Facades\RateLimiter;
|
use Illuminate\Support\Facades\RateLimiter;
|
||||||
use Illuminate\Support\Facades\Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Livewire\Livewire;
|
use Livewire\Livewire;
|
||||||
|
|
||||||
class AppServiceProvider extends ServiceProvider
|
class AppServiceProvider extends ServiceProvider
|
||||||
@ -69,6 +70,11 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
|
|
||||||
app()->instance(TruthSource::class, new TruthSource());
|
app()->instance(TruthSource::class, new TruthSource());
|
||||||
|
|
||||||
|
|
||||||
|
Model::preventLazyLoading(
|
||||||
|
!$this->app->isProduction()
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -79,7 +79,7 @@ class CompanyUserTransformer extends EntityTransformer
|
|||||||
|
|
||||||
public function includeToken(CompanyUser $company_user)
|
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);
|
$transformer = new CompanyTokenTransformer($this->serializer);
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ trait UserNotifies
|
|||||||
$notifiable_methods = [];
|
$notifiable_methods = [];
|
||||||
$notifications = $company_user->notifications;
|
$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 [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,7 +56,7 @@ trait UserNotifies
|
|||||||
$notifiable_methods = [];
|
$notifiable_methods = [];
|
||||||
$notifications = $company_user->notifications;
|
$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 [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user