PHP code example of renatomaldonado / manticore-laravel-search
1. Go to this page and download the library: Download renatomaldonado/manticore-laravel-search library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
renatomaldonado / manticore-laravel-search example snippets
// config/manticore.php
return [
'default' => env('MANTICORE_CONNECTION', 'default'),
'connections' => [
'default' => [
'host' => env('MANTICORE_HOST', '127.0.0.1'),
'port' => env('MANTICORE_PORT', 9308),
'username' => env('MANTICORE_USERNAME', null),
'password' => env('MANTICORE_PASSWORD', null),
'transport' => env('MANTICORE_TRANSPORT', 'Http'),
'timeout' => env('MANTICORE_TIMEOUT', 5),
'persistent' => env('MANTICORE_PERSISTENT', false),
'max_matches' => env('MANTICORE_MAX_MATCHES', 1000),
'limit_results' => env('MANTICORE_LIMIT_RESULTS', 0), // 0 = disabled
],
'analytics' => [
'host' => env('MANTICORE_ANALYTICS_HOST', '10.0.0.2'),
'port' => env('MANTICORE_ANALYTICS_PORT', 9308),
'max_matches' => 2000,
],
],
// Used internally when fetching all rows for consolidation.
'unlimited_max_matches' => env('MANTICORE_UNLIMITED_MAX_MATCHES', 1000000),
'pagination' => [
'context_key' => env('MANTICORE_PAGINATION_CONTEXT_KEY', '_mctx'),
'max_query_length' => env('MANTICORE_PAGINATION_MAX_QUERY_LENGTH', 1500),
'context_ttl' => env('MANTICORE_PAGINATION_CONTEXT_TTL', 900),
'cache_prefix' => env('MANTICORE_PAGINATION_CACHE_PREFIX', 'manticore:pagination:'),
'total_cache_ttl' => env('MANTICORE_PAGINATION_TOTAL_CACHE_TTL', 300),
],
];
use Illuminate\Database\Eloquent\Model;
use ManticoreLaravel\Traits\HasManticoreSearch;
class Company extends Model
{
use HasManticoreSearch;
protected $fillable = ['EntityID', 'EntityName', 'CountryISO'];
public function searchableAs(): string
{
return 'companies_index';
}
}
$results = Company::manticore()
->match('startup')
->where('countryiso', 'BR')
->orderBy('entityid', 'desc')
->limit(10)
->get();
// Simple relation
->with('owner')
// Column-constrained
->with('owner:id,name')
// Closure
->with(['tags' => fn($q) => $q->where('active', true)])
// Single consolidated result
$company = Company::manticore()
->where('entity_id', 42)
->consolidateBy('entity_id');
// All consolidated results
$companies = Company::manticore()
->match('fintech')
->consolidateAllBy('entity_id');
// Paginated consolidated results
$paginator = Company::manticore()
->match('fintech')
->paginateConsolidatedBy('entity_id', perPage: 20);
use ManticoreLaravel\Builder\ManticoreBuilder;
$input = ManticoreBuilder::resolvePaginationInputFromRequest('page');
Company::manticore()->where('status', 'active')->flushPaginationTotalCache();
use ManticoreLaravel\Facades\Manticore;
$config = Manticore::resolveConfig('default');
$client = Manticore::client('default');
$table = Manticore::table('companies_index', 'default');
$names = Manticore::connectionNames();
Manticore::forgetClient('default');
$rows = Company::manticore()
->match('fintech')
->select(['countryiso', 'COUNT(*) as total'])
->groupBy('countryiso')
->having('COUNT(*) > 1')
->orderBy('total', 'desc')
->get();
$rows = Company::manticore()
->rawQuery("SELECT * FROM companies_index WHERE countryiso = 'BR' LIMIT 0, 20")
->get();
$facets = Company::manticore()
->aggregate('country_agg', ['terms' => ['field' => 'countryiso', 'size' => 5]])
->getFacets();
Company::manticore()
->where('status', 'active')
->chunk(200, function ($models) {
foreach ($models as $model) {
// process …
}
});
$results = Company::manticore()
->usingConnection('analytics')
->match('cloud')
->get();
$sql = Company::manticore()
->match('fintech')
->where('status', 'active')
->toSql(); // no network call
bash
php artisan vendor:publish --provider="ManticoreLaravel\ManticoreServiceProvider"