Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
laravel-mongodb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sinan
laravel-mongodb
Commits
98bc2f5d
Unverified
Commit
98bc2f5d
authored
Mar 12, 2020
by
Stas
Committed by
GitHub
Mar 12, 2020
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1996 from stephandesouza/fix-embedsone-refresh
[3.x] Fix refresh() on EmbedsOne
parents
279b18c7
a78d7ba0
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
55 additions
and
6 deletions
+55
-6
EmbedsOne.php
src/Jenssegers/Mongodb/Relations/EmbedsOne.php
+9
-6
EmbeddedRelationsTest.php
tests/EmbeddedRelationsTest.php
+46
-0
No files found.
src/Jenssegers/Mongodb/Relations/EmbedsOne.php
View file @
98bc2f5d
...
...
@@ -8,9 +8,7 @@ use MongoDB\BSON\ObjectID;
class
EmbedsOne
extends
EmbedsOneOrMany
{
/**
* @inheritdoc
*/
public
function
initRelation
(
array
$models
,
$relation
)
{
foreach
(
$models
as
$model
)
{
...
...
@@ -20,14 +18,19 @@ class EmbedsOne extends EmbedsOneOrMany
return
$models
;
}
/**
* @inheritdoc
*/
public
function
getResults
()
{
return
$this
->
toModel
(
$this
->
getEmbedded
());
}
public
function
getEager
()
{
$eager
=
$this
->
get
();
// EmbedsOne only brings one result, Eager needs a collection!
return
$this
->
toCollection
([
$eager
]);
}
/**
* Save a new model and attach it to the parent model.
* @param Model $model
...
...
tests/EmbeddedRelationsTest.php
View file @
98bc2f5d
...
...
@@ -614,6 +614,36 @@ class EmbeddedRelationsTest extends TestCase
$this
->
assertNull
(
$user
->
father
);
}
public
function
testEmbedsOneRefresh
()
{
$user
=
User
::
create
([
'name'
=>
'John Doe'
]);
$father
=
new
User
([
'name'
=>
'Mark Doe'
]);
$user
->
father
()
->
associate
(
$father
);
$user
->
save
();
$user
->
refresh
();
$this
->
assertNotNull
(
$user
->
father
);
$this
->
assertEquals
(
'Mark Doe'
,
$user
->
father
->
name
);
}
public
function
testEmbedsOneEmptyRefresh
()
{
$user
=
User
::
create
([
'name'
=>
'John Doe'
]);
$father
=
new
User
([
'name'
=>
'Mark Doe'
]);
$user
->
father
()
->
associate
(
$father
);
$user
->
save
();
$user
->
father
()
->
dissociate
();
$user
->
save
();
$user
->
refresh
();
$this
->
assertNull
(
$user
->
father
);
}
public
function
testEmbedsManyToArray
()
{
/** @var User $user */
...
...
@@ -627,6 +657,22 @@ class EmbeddedRelationsTest extends TestCase
$this
->
assertIsArray
(
$array
[
'addresses'
]);
}
public
function
testEmbedsManyRefresh
()
{
/** @var User $user */
$user
=
User
::
create
([
'name'
=>
'John Doe'
]);
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'New York'
]));
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'Paris'
]));
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'Brussels'
]));
$user
->
refresh
();
$array
=
$user
->
toArray
();
$this
->
assertArrayHasKey
(
'addresses'
,
$array
);
$this
->
assertIsArray
(
$array
[
'addresses'
]);
}
public
function
testEmbeddedSave
()
{
/** @var User $user */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment