Skip to content

Commit 1fa74d0

Browse files
authored
Merge pull request #656 from DirectoryTree/BUG-655
Bug 655 - Groups relation Builder TypeError
2 parents 540f0fb + 0aebcf6 commit 1fa74d0

File tree

3 files changed

+29
-5
lines changed

3 files changed

+29
-5
lines changed

src/Query/Builder.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public function setCache(Cache $cache = null): static
156156
/**
157157
* Returns a new Query Builder instance.
158158
*/
159-
public function newInstance(string $baseDn = null): static
159+
public function newInstance(string $baseDn = null): Builder
160160
{
161161
return (new static($this->connection))->setDn(
162162
is_null($baseDn) ? $this->getDn() : $baseDn
@@ -166,7 +166,7 @@ public function newInstance(string $baseDn = null): static
166166
/**
167167
* Returns a new nested Query Builder instance.
168168
*/
169-
public function newNestedInstance(Closure $closure = null): static
169+
public function newNestedInstance(Closure $closure = null): Builder
170170
{
171171
$query = $this->newInstance()->nested();
172172

@@ -1026,7 +1026,7 @@ public function whereNotContains(string $field, string $value): static
10261026
*/
10271027
public function whereIn(string $field, array $values): static
10281028
{
1029-
return $this->orFilter(function (self $query) use ($field, $values) {
1029+
return $this->orFilter(function (Builder $query) use ($field, $values) {
10301030
foreach ($values as $value) {
10311031
$query->whereEquals($field, $value);
10321032
}

src/Query/Model/Builder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public function getModel(): Model
9191
/**
9292
* Get a new model query builder instance.
9393
*/
94-
public function newInstance(string $baseDn = null): static
94+
public function newInstance(string $baseDn = null): BaseBuilder
9595
{
9696
return parent::newInstance($baseDn)->model($this->model);
9797
}
@@ -236,7 +236,7 @@ public function findManyByAnr(array $values = [], array|string $columns = ['*'])
236236
*/
237237
protected function prepareAnrEquivalentQuery(string $value): static
238238
{
239-
return $this->orFilter(function (self $query) use ($value) {
239+
return $this->orFilter(function (BaseBuilder $query) use ($value) {
240240
foreach ($this->model->getAnrAttributes() as $attribute) {
241241
$query->whereEquals($attribute, $value);
242242
}

tests/Unit/Models/ActiveDirectory/ModelTest.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22

33
namespace LdapRecord\Tests\Unit\Models\ActiveDirectory;
44

5+
use LdapRecord\Connection;
6+
use LdapRecord\Container;
57
use LdapRecord\Models\ActiveDirectory\Entry;
8+
use LdapRecord\Models\Relations\HasMany;
9+
use LdapRecord\Query\Model\ActiveDirectoryBuilder;
610
use LdapRecord\Query\Model\Builder;
711
use LdapRecord\Tests\TestCase;
812
use Mockery as m;
@@ -88,6 +92,26 @@ public function test_restore()
8892

8993
$this->assertEquals('CN=John Doe,DC=local,DC=com', $m->getDn());
9094
}
95+
96+
public function test_relation_query_can_be_created()
97+
{
98+
Container::addConnection(new Connection);
99+
100+
$entry = new class extends Entry
101+
{
102+
public function relation(): HasMany
103+
{
104+
return $this->hasMany(Entry::class, 'dn');
105+
}
106+
};
107+
108+
/** @var HasMany $relation */
109+
$relation = $entry->relation()->whereIn('foo', ['foo']);
110+
111+
$this->assertInstanceOf(HasMany::class, $relation);
112+
$this->assertInstanceOf(ActiveDirectoryBuilder::class, $query = $relation->getQuery());
113+
$this->assertEquals('(|(foo=\66\6f\6f))', $query->getQuery());
114+
}
91115
}
92116

93117
class TestModelRestoreStub extends Entry

0 commit comments

Comments
 (0)