Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Query Translator

Query Translator Laravel Package

netgen/query-translator

Laravel package that translates request input into structured query criteria for filtering, sorting, pagination, and includes. Build safe, reusable query pipelines for Eloquent with configurable mappings and operators, keeping controllers thin and consistent across endpoints.

View on GitHub
Deep Wiki
Context7

Query Translator is a search query translator with AST representation

Frequently asked questions about Query Translator
How does Query Translator handle multi-search-engine support (e.g., Elasticsearch + PostgreSQL)?
The package translates queries into an Abstract Syntax Tree (AST) representation, making it engine-agnostic. You can map AST nodes to different query dialects (e.g., Elasticsearch DSL or PostgreSQL full-text operators) via custom adapters. This is ideal for hybrid search systems where fallback mechanisms are needed, but requires manual configuration for each target engine.
Can I use Query Translator with Laravel Scout for search-as-a-service providers like Algolia or Meilisearch?
Yes, but indirectly. Query Translator generates structured criteria that can be passed to Scout’s custom query builders. However, Scout’s built-in drivers (e.g., Algolia) may not natively support AST-based queries, so you’d need to bridge the gap by translating AST nodes into provider-specific syntax. Test thoroughly with your chosen Scout driver.
What Laravel versions and PHP versions does Query Translator officially support?
The package was last updated in 2022 and lacks explicit Laravel 10 or PHP 8.2+ support. It likely works with Laravel 9 and PHP 8.1, but named arguments, constructor property promotion, and other PHP 8.2+ features may break compatibility. Test early or fork the package for modern PHP/Laravel features.
How do I integrate Query Translator into an existing Laravel API with custom Eloquent queries?
Start by binding the translator to Laravel’s service container via `bind()` in a provider. Use the translator’s `translate()` method to convert request input (e.g., `$request->all()`) into AST criteria, then apply those criteria to Eloquent queries using `where()`, `orWhere()`, or custom query builders. Wrap the logic in a service class to keep controllers thin.
Does Query Translator support nested or complex query conditions (e.g., nested `OR`/`AND` clauses)?
Yes, the AST representation naturally handles nested conditions. You can define custom operators and mappings for complex logic, such as nested `OR` groups or parenthetical conditions. However, unsupported operators (e.g., geospatial queries) may require extending the package or writing custom AST nodes.
What’s the performance impact of using AST-based query translation in high-traffic Laravel apps?
AST parsing adds CPU overhead during query translation, which could impact latency under high query volumes (e.g., >1000 QPS). Benchmark your specific use case, especially if queries are complex. For real-time APIs, consider caching translated ASTs or offloading parsing to queue workers.
How do I handle malformed or malicious query input (e.g., SQL injection risks) with Query Translator?
Query Translator abstracts raw SQL, reducing injection risks, but you must still validate input (e.g., whitelist allowed fields/operators). Use Laravel’s validation rules or custom middleware to sanitize input before translation. For database queries, ensure Eloquent’s query builder escapes values automatically.
Are there alternatives to Query Translator for Laravel that are actively maintained?
Yes. For search-as-a-service, consider Laravel Scout’s built-in drivers (Algolia, Meilisearch) or packages like `spatie/laravel-searchable`. For database queries, Criteria patterns (e.g., `spatie/laravel-query-builder`) or custom repositories may suffice. If you need AST-based abstraction, evaluate `symfony/expression-language` directly or fork Query Translator.
Can Query Translator work with Laravel’s pagination and eager loading features?
Yes, the package supports pagination by translating input into `paginate()` or `cursor()` calls. For eager loading (`with()`), you’ll need to manually integrate the translated relationships into your query builder or use Scout’s built-in eager loading if applicable. Test edge cases like nested eager loading.
How do I extend Query Translator to support custom query operators or search engines?
Extend the package by creating custom AST node classes and registering them via the translator’s configuration. For new search engines, implement an adapter that converts AST nodes to the engine’s query syntax (e.g., Elasticsearch DSL or Solr XML). The MIT license allows full customization, but document your changes for future maintenance.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
bugban/symfony
beyonder-capi/workflow-extensions-bundle
beyonder-capi/job-queue-bundle
yandex/translate-api
voku/simple_html_dom
league/flysystem-vfs
bkwld/upchuck
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk