Comments (4)
If I'm understanding correctly you should be able to leave that as is and it should work. The $relations
array will forward the user_search
parameter to search
in the UserFilter
and then you can add methods locally on AnotherEntity
model to filter on AnotherEntity
.
from eloquentfilter.
I'd like to have filter like this one
public $relations = [
'order.user' => [
'user_search' => 'search',
]
];
public function search($search)
{
//so here I need somehow to combine 'user_search' and another additional filter by own field or even another relation
return $this->userSearch($search)
->name($search); //name of AnotherEntity
}
public function name($search)
{
return $q->where('name', 'LIKE', "%$name%");
}
and ofcourse conditions must be connected with OR operator
from eloquentfilter.
So this is kind of tricky in the filter because when using the $relations
array or related
method they both collect all calls to each related entity and nest all those in one root level whereHas
query so combining either of those methods with an or
could potentially lead to unexpected behavior when adding more parameters that would chain with and
queries.
I would suggest to not use the $relations
array or related()
method for this use case and use a nested where
query where you can join with an or
.
So, given the query to AnotherEntity
:
AnotherEntity::filter([
'search' => 'some_string',
'user_search' => 'user_string'
])
->get()
And the AnotherEntityModelFilter
to search both strings with an OR
condition:
public function search($search)
{
return $this->where(function($query) {
$query->whereHas('order.users', function($q) {
// $q is an instance of the User query builder
// so it has access to the UserModelFilter
// allowing us to call `filter` on it
$q->filter([
'search' => $this->input('user_search')
]);
})
->whereLike('name', $search, 'or');
});
}
from eloquentfilter.
thanks, will try your solution. @Tucker-Eric
from eloquentfilter.
Related Issues (20)
- How to use group by or multiple group by criterias HOT 1
- Need help! HOT 1
- $relations and related() method question HOT 2
- Postgresql support (case-insensitively) HOT 2
- Filter on append attributes HOT 1
- sorted by table with relation HOT 1
- Breaking change on 2.4.1 from 2.4.0 HOT 3
- Add orWhereLike HOT 2
- How should you handle Laravel Scout integration? HOT 8
- filter by created_at HOT 1
- Your composer is powerful! HOT 1
- Access the other request parameters within the filter function? HOT 2
- Access model class HOT 2
- filtering by date interval HOT 1
- Filter by column and and relation column HOT 1
- Related filter does not accept zero or false value
- $relations setting to create orWhereHas HOT 4
- Can't sort many to many HOT 1
- Can't sort on date HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from eloquentfilter.