PHP code example of mkcg / php-query-model
1. Go to this page and download the library: Download mkcg/php-query-model 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/ */
mkcg / php-query-model example snippets
$model = Schema\User::make('default', 'user')
->with(Schema\Address::make())
->with(Schema\Post::make());
$criteria = (new QueryCriteria())
->forCollection('user')
->addFilter('status', FilterInterface::FILTER_IN, [ 2 , 3 , 5 , 7 ])
->addFilter('registered_at', FilterInterface::FILTER_GREATER_THAN_EQUAL, '2000-01-01')
->addSort('firstname', 'ASC')
->addSort('lastname', 'ASC')
->setLimit(10)
->forCollection('addresses')
->setLimitByParent(2)
->forCollection('posts')
->addFilter('title', FilterInterface::FILTER_FULLTEXT_MATCH, 'ab')
;
$users = $engine->query($model, $criteria);
echo json_encode($users->getContent(), JSON_PRETTY_PRINT) . "\n";
echo "\nFound : " . $users->getCount() . " users\n";
$iterator = $engine->scroll($model, $criteria);
foreach ($iterator as $user) {
echo json_encode($user, JSON_PRETTY_PRINT) . "\n";
}
use MKCG\Model\DBAL\QueryEngine;
use MKCG\Model\DBAL\Drivers;
$mongoClient = new MongoDB\Client('mongodb://root:password@mongodb');
$redisClient = new \Predis\Client([
'scheme' => 'tcp',
'host' => 'redisearch',
'port' => 6379
]);
$sqlConnection = \Doctrine\DBAL\DriverManager::getConnection([
'user' => 'root',
'password' => 'root',
'host' => 'mysql',
'driver' => 'pdo_mysql',
]);
$engine = (new QueryEngine('mysql'))
->registerDriver(new Drivers\Doctrine($sqlConnection), 'mysql')
->registerDriver(new Drivers\CsvReader($fixturePath), 'csv')
->registerDriver(new Drivers\RssReader(new Adapters\Guzzle), 'rss')
->registerDriver(new Drivers\SitemapReader(new Adapters\Guzzle), 'sitemap')
->registerDriver(new Drivers\Http(new Adapters\Guzzle), 'http')
->registerDriver(new Drivers\HttpRobot(new Adapters\Guzzle), 'http_robot')
->registerDriver(new Drivers\MongoDB($mongoClient), 'mongodb')
(new QueryCriteria())
->forCollection('order')
->addCallableFilter(function(Query $query, ...$arguments) {
// do something
})
function pipelineEtl(QueryEngine $engine)
{
$model = Schema\Product::make('default', 'products');
$criteria = (new QueryCriteria())
->forCollection('products')
->addFilter('sku.color', FilterInterface::FILTER_IN, ['aqua', 'purple'])
;
$iterator = $engine->scroll($model, $criteria, 100);
$pushed = ETL::extract($engine->scroll($model, $criteria, 100), 1000, 500)
->transform(function($item) {
return [
'id' => $item['_id'],
'sku' => $item['sku']
];
})
->transform(function($item) {
return $item + [
'sku_count' => count($item['sku'] ?? [])
];
})
->load(function(iterable $bulk) {
echo sprintf("[ETL] Loader 1 - Loading %d elements\n", count($bulk));
})
->load(function(iterable $bulk) {
echo sprintf("[ETL] Loader 2 - Loading %d elements\n", count($bulk));
})
->load(function(iterable $bulk) {
echo sprintf("[ETL] Loader 3 - Loading %d elements\n", count($bulk));
})
->run();
echo sprintf("[ETL] Pushed %d elements\n", $pushed);
}
pipelineEtl($engine);
searchOrder($engine);
// searchProducts($engine);
// searchGithubRobot($engine);
// searchSitemaps($engine);
// searchPackages($engine);
// searchUsers($engine);
// searchHackerNews($engine);
bash
docker-compose up --build -d
docker exec -it php_query_model sh -c "cd /home/php-query-model/examples && composer install"
docker exec -it php_query_model sh -c "php /home/php-query-model/examples/index.php"