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
e1c6e53e
Unverified
Commit
e1c6e53e
authored
Apr 25, 2018
by
Jens Segers
Committed by
GitHub
Apr 25, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1454 from RomM1/queueable-relationships
fix serialize embedded relationships
parents
657da133
fa045aea
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
77 additions
and
0 deletions
+77
-0
Model.php
src/Jenssegers/Mongodb/Eloquent/Model.php
+48
-0
EmbedsOneOrMany.php
src/Jenssegers/Mongodb/Relations/EmbedsOneOrMany.php
+10
-0
EmbeddedRelationsTest.php
tests/EmbeddedRelationsTest.php
+19
-0
No files found.
src/Jenssegers/Mongodb/Eloquent/Model.php
View file @
e1c6e53e
...
...
@@ -11,6 +11,8 @@ use Illuminate\Support\Str;
use
Jenssegers\Mongodb\Query\Builder
as
QueryBuilder
;
use
MongoDB\BSON\ObjectID
;
use
MongoDB\BSON\UTCDateTime
;
use
Illuminate\Contracts\Queue\QueueableEntity
;
use
Illuminate\Contracts\Queue\QueueableCollection
;
abstract
class
Model
extends
BaseModel
{
...
...
@@ -420,6 +422,52 @@ abstract class Model extends BaseModel
return
$key
;
}
/**
* Get the queueable relationships for the entity.
*
* @return array
*/
public
function
getQueueableRelations
()
{
$relations
=
[];
foreach
(
$this
->
getRelationsWithoutParent
()
as
$key
=>
$relation
)
{
if
(
method_exists
(
$this
,
$key
))
{
$relations
[]
=
$key
;
}
if
(
$relation
instanceof
QueueableCollection
)
{
foreach
(
$relation
->
getQueueableRelations
()
as
$collectionValue
)
{
$relations
[]
=
$key
.
'.'
.
$collectionValue
;
}
}
if
(
$relation
instanceof
QueueableEntity
)
{
foreach
(
$relation
->
getQueueableRelations
()
as
$entityKey
=>
$entityValue
)
{
$relations
[]
=
$key
.
'.'
.
$entityValue
;
}
}
}
return
array_unique
(
$relations
);
}
/**
* Get loaded relations for the instance without parent.
*
* @return array
*/
protected
function
getRelationsWithoutParent
()
{
$relations
=
$this
->
getRelations
();
if
(
$parentRelation
=
$this
->
getParentRelation
())
{
unset
(
$relations
[
$parentRelation
->
getQualifiedForeignKeyName
()]);
}
return
$relations
;
}
/**
* @inheritdoc
*/
...
...
src/Jenssegers/Mongodb/Relations/EmbedsOneOrMany.php
View file @
e1c6e53e
...
...
@@ -393,4 +393,14 @@ abstract class EmbedsOneOrMany extends Relation
return
$results
;
}
/**
* Get the foreign key for the relationship.
*
* @return string
*/
public
function
getQualifiedForeignKeyName
()
{
return
$this
->
foreignKey
;
}
}
tests/EmbeddedRelationsTest.php
View file @
e1c6e53e
...
...
@@ -765,4 +765,23 @@ class EmbeddedRelationsTest extends TestCase
$this
->
assertEquals
(
2
,
$results
->
count
());
$this
->
assertEquals
(
3
,
$results
->
total
());
}
public
function
testGetQueueableRelationsEmbedsMany
()
{
$user
=
User
::
create
([
'name'
=>
'John Doe'
]);
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'New York'
]));
$user
->
addresses
()
->
save
(
new
Address
([
'city'
=>
'Paris'
]));
$this
->
assertEquals
([
'addresses'
],
$user
->
getQueueableRelations
());
$this
->
assertEquals
([],
$user
->
addresses
->
getQueueableRelations
());
}
public
function
testGetQueueableRelationsEmbedsOne
()
{
$user
=
User
::
create
([
'name'
=>
'John Doe'
]);
$user
->
father
()
->
save
(
new
User
([
'name'
=>
'Mark Doe'
]));
$this
->
assertEquals
([
'father'
],
$user
->
getQueueableRelations
());
$this
->
assertEquals
([],
$user
->
father
->
getQueueableRelations
());
}
}
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