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
4d8fb95d
Unverified
Commit
4d8fb95d
authored
Apr 15, 2020
by
Stas
Committed by
GitHub
Apr 15, 2020
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2020 from ilyasokay/query-integer-fix
query like on integer fields support
parents
a7acac76
aab261b1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
21 additions
and
1 deletion
+21
-1
Builder.php
src/Jenssegers/Mongodb/Query/Builder.php
+12
-1
QueryTest.php
tests/QueryTest.php
+9
-0
No files found.
src/Jenssegers/Mongodb/Query/Builder.php
View file @
4d8fb95d
...
...
@@ -993,6 +993,7 @@ class Builder extends BaseBuilder
protected
function
compileWhereBasic
(
array
$where
)
{
extract
(
$where
);
$is_numeric
=
false
;
// Replace like or not like with a Regex instance.
if
(
in_array
(
$operator
,
[
'like'
,
'not like'
]))
{
...
...
@@ -1004,15 +1005,21 @@ class Builder extends BaseBuilder
// Convert to regular expression.
$regex
=
preg_replace
(
'#(^|[^\\\])%#'
,
'$1.*'
,
preg_quote
(
$value
));
$plain_value
=
$value
;
// Convert like to regular expression.
if
(
!
Str
::
startsWith
(
$value
,
'%'
))
{
$regex
=
'^'
.
$regex
;
}
else
{
$plain_value
=
Str
::
replaceFirst
(
'%'
,
null
,
$plain_value
);
}
if
(
!
Str
::
endsWith
(
$value
,
'%'
))
{
$regex
.=
'$'
;
}
else
{
$plain_value
=
Str
::
replaceLast
(
'%'
,
null
,
$plain_value
);
}
$is_numeric
=
is_numeric
(
$plain_value
);
$value
=
new
Regex
(
$regex
,
'i'
);
}
// Manipulate regexp operations.
elseif
(
in_array
(
$operator
,
[
'regexp'
,
'not regexp'
,
'regex'
,
'not regex'
]))
{
...
...
@@ -1032,7 +1039,11 @@ class Builder extends BaseBuilder
}
if
(
!
isset
(
$operator
)
||
$operator
==
'='
)
{
$query
=
[
$column
=>
$value
];
if
(
$is_numeric
)
{
$query
=
[
'$where'
=>
'/^'
.
$value
->
getPattern
()
.
'/.test(this.'
.
$column
.
')'
];
}
else
{
$query
=
[
$column
=>
$value
];
}
}
elseif
(
array_key_exists
(
$operator
,
$this
->
conversion
))
{
$query
=
[
$column
=>
[
$this
->
conversion
[
$operator
]
=>
$value
]];
}
else
{
...
...
tests/QueryTest.php
View file @
4d8fb95d
...
...
@@ -69,6 +69,15 @@ class QueryTest extends TestCase
$users
=
User
::
where
(
'name'
,
'like'
,
't%'
)
->
get
();
$this
->
assertCount
(
1
,
$users
);
$users
=
User
::
where
(
'age'
,
'like'
,
'%35%'
)
->
get
();
$this
->
assertCount
(
3
,
$users
);
$users
=
User
::
where
(
'age'
,
'like'
,
'3%'
)
->
get
();
$this
->
assertCount
(
6
,
$users
);
$users
=
User
::
where
(
'age'
,
'like'
,
'%3'
)
->
get
();
$this
->
assertCount
(
4
,
$users
);
}
public
function
testNotLike
()
:
void
...
...
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