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
eed876e6
Commit
eed876e6
authored
Aug 06, 2014
by
Jens Segers
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #276 from v-six/master
Allows non-string _id
parents
96036ab1
b4456474
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
6 deletions
+40
-6
Model.php
src/Jenssegers/Mongodb/Model.php
+10
-5
ModelTest.php
tests/ModelTest.php
+30
-1
No files found.
src/Jenssegers/Mongodb/Model.php
View file @
eed876e6
...
@@ -45,17 +45,22 @@ abstract class Model extends \Jenssegers\Eloquent\Model {
...
@@ -45,17 +45,22 @@ abstract class Model extends \Jenssegers\Eloquent\Model {
/**
/**
* Custom accessor for the model's id.
* Custom accessor for the model's id.
*
*
* @return string
* @param mixed $value
*
* @return mixed
*/
*/
public
function
getIdAttribute
(
$value
)
public
function
getIdAttribute
(
$value
)
{
{
if
(
$value
)
return
(
string
)
$value
;
if
(
!
$value
&&
array_key_exists
(
'_id'
,
$this
->
attributes
))
{
$value
=
$this
->
attributes
[
'_id'
];
}
// Return _id as string
// Return _id as string
if
(
array_key_exists
(
'_id'
,
$this
->
attributes
))
if
(
$value
instanceof
MongoId
)
{
{
return
(
string
)
$value
;
return
(
string
)
$this
->
attributes
[
'_id'
];
}
}
return
$value
;
}
}
/**
/**
...
...
tests/ModelTest.php
View file @
eed876e6
...
@@ -79,7 +79,7 @@ class ModelTest extends TestCase {
...
@@ -79,7 +79,7 @@ class ModelTest extends TestCase {
$this
->
assertEquals
(
20
,
$check
->
age
);
$this
->
assertEquals
(
20
,
$check
->
age
);
}
}
public
function
testManualId
()
public
function
testManual
String
Id
()
{
{
$user
=
new
User
;
$user
=
new
User
;
$user
->
_id
=
'4af9f23d8ead0e1d32000000'
;
$user
->
_id
=
'4af9f23d8ead0e1d32000000'
;
...
@@ -93,6 +93,35 @@ class ModelTest extends TestCase {
...
@@ -93,6 +93,35 @@ class ModelTest extends TestCase {
$raw
=
$user
->
getAttributes
();
$raw
=
$user
->
getAttributes
();
$this
->
assertInstanceOf
(
'MongoId'
,
$raw
[
'_id'
]);
$this
->
assertInstanceOf
(
'MongoId'
,
$raw
[
'_id'
]);
$user
=
new
User
;
$user
->
_id
=
'customId'
;
$user
->
name
=
'John Doe'
;
$user
->
title
=
'admin'
;
$user
->
age
=
35
;
$user
->
save
();
$this
->
assertEquals
(
true
,
$user
->
exists
);
$this
->
assertEquals
(
'customId'
,
$user
->
_id
);
$raw
=
$user
->
getAttributes
();
$this
->
assertInternalType
(
'string'
,
$raw
[
'_id'
]);
}
public
function
testManualIntId
()
{
$user
=
new
User
;
$user
->
_id
=
1
;
$user
->
name
=
'John Doe'
;
$user
->
title
=
'admin'
;
$user
->
age
=
35
;
$user
->
save
();
$this
->
assertEquals
(
true
,
$user
->
exists
);
$this
->
assertEquals
(
1
,
$user
->
_id
);
$raw
=
$user
->
getAttributes
();
$this
->
assertInternalType
(
'integer'
,
$raw
[
'_id'
]);
}
}
public
function
testDelete
()
public
function
testDelete
()
...
...
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