Skip to content

Commit 4354bdb

Browse files
committed
Fix refresh() on EmbedsOne
1 parent 3c85217 commit 4354bdb

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

src/Jenssegers/Mongodb/Relations/EmbedsOne.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,17 @@ public function getResults()
2828
return $this->toModel($this->getEmbedded());
2929
}
3030

31+
/**
32+
* @inheritdoc
33+
*/
34+
public function getEager()
35+
{
36+
$eager = $this->get();
37+
38+
// EmbedsOne only brings one result, Eager needs a collection!
39+
return $this->toCollection([$eager]);
40+
}
41+
3142
/**
3243
* Save a new model and attach it to the parent model.
3344
* @param Model $model

tests/EmbeddedRelationsTest.php

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,36 @@ public function testEmbedsOneDelete()
614614
$this->assertNull($user->father);
615615
}
616616

617+
public function testEmbedsOneRefresh()
618+
{
619+
$user = User::create(['name' => 'John Doe']);
620+
$father = new User(['name' => 'Mark Doe']);
621+
622+
$user->father()->associate($father);
623+
$user->save();
624+
625+
$user->refresh();
626+
627+
$this->assertNotNull($user->father);
628+
$this->assertEquals('Mark Doe', $user->father->name);
629+
}
630+
631+
public function testEmbedsOneEmptyRefresh()
632+
{
633+
$user = User::create(['name' => 'John Doe']);
634+
$father = new User(['name' => 'Mark Doe']);
635+
636+
$user->father()->associate($father);
637+
$user->save();
638+
639+
$user->father()->dissociate();
640+
$user->save();
641+
642+
$user->refresh();
643+
644+
$this->assertNull($user->father);
645+
}
646+
617647
public function testEmbedsManyToArray()
618648
{
619649
/** @var User $user */
@@ -627,6 +657,22 @@ public function testEmbedsManyToArray()
627657
$this->assertIsArray($array['addresses']);
628658
}
629659

660+
public function testEmbedsManyRefresh()
661+
{
662+
/** @var User $user */
663+
$user = User::create(['name' => 'John Doe']);
664+
$user->addresses()->save(new Address(['city' => 'New York']));
665+
$user->addresses()->save(new Address(['city' => 'Paris']));
666+
$user->addresses()->save(new Address(['city' => 'Brussels']));
667+
668+
$user->refresh();
669+
670+
$array = $user->toArray();
671+
672+
$this->assertArrayHasKey('addresses', $array);
673+
$this->assertIsArray($array['addresses']);
674+
}
675+
630676
public function testEmbeddedSave()
631677
{
632678
/** @var User $user */

0 commit comments

Comments
 (0)