Comments (2)
I think the best workaround is to create a MySQL View.
Brent from Spatie has a good article on it.
You can then reference the "MySQL View" model (which is still a regular eloquent model, it just points to a view instead of a table), and now you can search across relationships because the view can be built to join the relationships.
from laravel-scout-mysql-driver.
Thanks @wlius-support3 for the idea to use a View.
This may help others:
I needed to perform the search on the "main" model (and return it as the result) but obviously use the View model for the actual search query.
I overrode the search()
method on the main model so that the query is performed on the search View.
MainModel.php
public static function search($query = '', $callback = null) {
return app(Builder::class, [
'model' => new MainModelSeachView(), // Just this changed from the parent implementation.
'query' => $query,
'callback' => $callback,
'softDelete'=> static::usesSoftDelete() && config('scout.soft_delete', false),
]);
}
Then in the View model I overrode newFromBuilder()
in order to return the result as the main model.
MainModelSearchView.php
public function newFromBuilder($attributes = [], $connection = NULL) {
return MainModel::find($attributes->id); // Ensure the ID is available in the View table
}
This way I can perform a search like MainModel::search('query')
but the View is queried and I still get the result as a collection of MainModels.
Would love to know if there's a better way to do this.
from laravel-scout-mysql-driver.
Related Issues (20)
- Exception with Queue Exception: Please install the Algolia client: algolia/algoliasearch-client-php. in vendor/laravel/scout/src/EngineManager.php:59 HOT 1
- Callback method for modifying the db query not working
- How to exclude columns from the search?
- Search doesn't work with `with` or `load` HOT 2
- Class 'Yab\MySQLScout\Engines\Modes\' not found HOT 1
- Cache full text index fields HOT 2
- Query expansion not used in select columns
- Laravel 8 support HOT 3
- Question: highlight helper function
- Change "NATURAL LANGUAGE" search mode for models with unsupported columns like "int" HOT 1
- Inf and NaN cannot be JSON encoded HOT 1
- Laravel scout v9 support HOT 4
- Fallback not worked
- Emojis
- Laravel 9 Support
- Class 'Yab\MySQLScout\Engines\Modes\' not found
- Scout 10 Support HOT 1
- Search does't work with WHERE HOT 9
- Relevance is not accurate in boolean mode
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 laravel-scout-mysql-driver.