Restricting models from a Laravel Scout index
This blog post was originally published a little while ago. Please consider that it may no longer be relevant or even accurate.
For some implementations you may want to restrict some of your models from going into your Laravel Scout index. For example on my own blog I only want to index my posts which have been published - if for whatever reason I haven't decided to publish a post yet then it shouldn't be searchable.
The solution below will work fine but in the current release of Laravel Scout (1.1.4) it will simply index your restricted models as an empty array. In the next tagged release though, it will no longer need to index empty arrays at all.
Simply override the toSearchableArray()
method to return an empty array if the model should not be indexed. If it is to be indexed you can still call toArray()
(as Laravel Scout normally does under the hood) or provide whatever data you would like to.