Skip to content

Commit 7a8f781

Browse files
committed
Tweak how object class scopes are applied
1 parent e36a14a commit 7a8f781

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

src/Models/Model.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,11 +375,28 @@ public static function unsetConnectionContainer(): void
375375
*/
376376
public function registerModelScopes(Builder $query): Builder
377377
{
378+
$this->registerObjectClassScopes($query);
379+
378380
$this->registerGlobalScopes($query);
379381

380382
return $query;
381383
}
382384

385+
/**
386+
* Register the object class scopes for this builder instance.
387+
*/
388+
public function registerObjectClassScopes(Builder $query): Builder
389+
{
390+
if (static::$objectClasses) {
391+
$query->withGlobalScope(
392+
Scopes\HasObjectClasses::class,
393+
new Scopes\HasObjectClasses
394+
);
395+
}
396+
397+
return $query;
398+
}
399+
383400
/**
384401
* Register the global model scopes.
385402
*/

src/Query/Model/Builder.php

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
use LdapRecord\Models\Model;
1111
use LdapRecord\Models\ModelNotFoundException;
1212
use LdapRecord\Models\Scope;
13-
use LdapRecord\Models\Scopes\HasObjectClasses;
1413
use LdapRecord\Models\Types\ActiveDirectory;
1514
use LdapRecord\Query\Builder as QueryBuilder;
1615
use LdapRecord\Query\BuildsQueries;
@@ -473,18 +472,14 @@ public function setModel(Model $model): static
473472
*/
474473
public function applyScopes(): static
475474
{
476-
$scopes = $this->model::$objectClasses ? array_merge([
477-
HasObjectClasses::class => new HasObjectClasses,
478-
], $this->scopes) : $this->scopes;
479-
480-
if (empty($scopes)) {
475+
if (empty($this->scopes)) {
481476
return $this;
482477
}
483478

484479
// Scopes should not be escapable, so we will wrap the
485480
// application of the scopes within a nested query.
486-
$this->where(function (self $query) use ($scopes) {
487-
foreach ($scopes as $identifier => $scope) {
481+
$this->where(function (self $query) {
482+
foreach ($this->scopes as $identifier => $scope) {
488483
if (isset($this->appliedScopes[$identifier])) {
489484
continue;
490485
}

0 commit comments

Comments
 (0)