timgws/query-builder-parser
Parse jQuery QueryBuilder rules into Laravel/Illuminate query builder constraints. Safely whitelist allowed fields, then generate SQL queries (and MongoDB queries via jenssegers/mongodb) for filtering results in apps and integrations like DataTables.
JoinSupportingQueryBuilderParser extends core functionality for complex joins, though it adds complexity. For most use cases, the base QueryBuilderParser suffices.illuminate/database (included in Laravel) and optionally jenssegers/mongodb for MongoDB support. No heavy dependencies or conflicts.$qbp = new QueryBuilderParser(['allowed_columns']);
$query = $qbp->parse($frontendRules, $queryBuilder);
$results = $query->get();
This reduces integration complexity and onboarding time.jenssegers/mongodb, which may introduce additional dependencies and edge cases (e.g., schema validation). Risk: Medium if MongoDB is a primary use case.JoinSupportingQueryBuilderParser adds flexibility but increases integration complexity. Risk: Low for simple queries; high for deeply nested joins.Database Strategy:
jenssegers/mongodb already in the stack?Frontend Compatibility:
Performance:
Security:
Long-Term Maintenance:
Testing:
jenssegers/mongodb and minor setup (e.g., collection references).QueryBuilderParser:
// Before:
$query = DB::table('users')->where('active', 1)->where('name', 'like', '%tim%');
// After:
$qbp = new QueryBuilderParser(['active', 'name']);
$query = $qbp->parse($request->queryBuilderRules, DB::table('users'));
{
"condition": "AND",
"rules": [
{"field": "active", "operator": "equal", "value": 1},
{"field": "name", "operator": "contains", "value": "tim"}
]
}
jenssegers/mongodb).QueryBuilderParser.JSON.stringify(rules)).JoinSupportingQueryBuilderParser for complex joins.illuminate/database and jenssegers/mongodb (if used) for breaking changes.platform-check to enforce Laravel version compatibility.laravel and query-builder-parser for community help.How can I help you explore Laravel packages today?