Comments (3)
Sry i haven't time to test it right now
I can check it closer to the weekend
from eloquentfilter.
Found solution:
if override function getRelatedFilterInput
to
public function getRelatedFilterInput($related)
{
$output = [];
if (array_key_exists($related, $this->relations)) {
foreach ((array) $this->relations[$related] as $alias => $name) {
// If the alias is a string that is what we grab from the input
// Then use the name for the output so we can alias relations
$keyName = is_string($alias) ? $alias : $name;
if (array_key_exists("$related.$keyName", $this->input)) {
$keyValue = $this->input["$related.$keyName"];
if ($this->includeFilterInput($keyName, $keyValue)) {
$output[$name] = $keyValue;
}
}
}
}
return $output;
}
(changed check for array_key_exists from $keyName to "$related.$keyName")
and add to relation array something like:
public $relations = [
'user' => ['id' => 'id'],
'user.profile' => ['id' => 'id'],
];
It starts to filter as i want.
So with json like:
{
"id": 7,
"user.id": 3,
"user.profile.id": 5
}
and with relations described above it works
if don't change check for array_key_exists (but keep relations) it's always pass only value from id
but with it's pass value from each to each
P.S.
The reason why i didn't change next check
if ($this->includeFilterInput($keyName, $keyValue)) {
$output[$name] = $keyValue;
}
bcz in the next function parameter $keyName do nothing only $keyValue:
protected function includeFilterInput($key, $value)
{
return $value !== '' && $value !== null && ! (is_array($value) && empty($value));
}
from eloquentfilter.
Hmmm, does the following work without that override?
class CourseModelFilter extends ModelFilter
{
protected $model = Course::class;
public $relations = [
'user' => ['user.id' => 'id' , 'user.group.id' => 'group'],
];
public function id(int $id): CourseModelFilter
{
return $this->where('id', $id);
}
}
You should be able to alias the $relations
array for a relation in the form of
public $relations = [
'<related filter>' => ['<key to expect from input>' => '<key/method to use for related filter>'],
];
from eloquentfilter.
Related Issues (20)
- Combine filter by related and own fields HOT 4
- 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
- Filter by relationship field and latest fails HOT 3
- Relations with one related method HOT 3
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.