1. Go to this page and download the library: Download nmarniesse/pomm-filter 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/ */
use NMarniesse\PommFilter\FilterCondition;
use NMarniesse\PommFilter\FilterType\BasicFilter;
use NMarniesse\PommFilter\FilterType\BooleanFilter;
# The sql query with a placeholder for the where condition
$sql = <<<SQL
SELECT
p.id,
p.color,
c.category_id,
pr.unit_price
FROM product p
INNER JOIN category c ON ...
INNER JOIN price pr ON ...
LEFT JOIN product_tag pt ON ...
WHERE {conditions}
SQL;
# Define the available filters and create the Where instance
$filter_condition = new FilterCondition('p');
$filter_condition->addFilter(new BasicFilter('color', 'p')); // optional
$filter_condition->addFilter(new BooleanFilter('is_active'));
$filter_condition->addFilter(new BasicFilter('category_id', 'c'));
$filter_condition->addFilter(new BasicFilter('unit_price', 'pr', '>='));
$filter_condition->addFilter(new BasicFilter('unit_price', 'pr', '<='), 'price_from');
$filter_condition->addFilter(new BasicFilter('tag', 'pt'), 'price_to');
// ...
$where = $filter_condition>getWhere($array_filters);
# Execute the query with Pomm with our instance of Where
$sql = str_replace('{conditions}', (string) $where, $sql);
$pomm_session->getQueryManager()->query($sql, $where->getValues());
use NMarniesse\PommFilter\FilterCondition;
use NMarniesse\PommFilter\FilterType\BasicFilter;
# Create a filter condition.
# When you pass a filter {"key1": "value1"}, it assumes that the field *key1* exists in your query
$filter_condition = new FilterCondition();
# When you have multiple tables in your query, you may specify the table/alias name
# Then when you pass a filter {"key1": "value1"}, it will automatically construct "user.key1 = $*"
$filter_condition = new FilterCondition('user');
# To use a filter on a field which is not on main table, you have to add it manually
# For example to add a filter on the field category on table p
$filter_condition->addFilter(new BasicFilter('category', 'p'));
# If you want personnalize your filter name, use second parameter to specify it
$filter_condition->addFilter(new BasicFilter('category', 'p'), 'my_custom_category_filter_name');
use NMarniesse\PommFilter\FilterCondition;
use NMarniesse\PommFilter\FilterType\BasicFilter;
# Create a BasicFilter
$filter1 = new BasicFilter('color');
# Create a BasicFilter and specify the table name/alias used in the query
$filter2 = new BasicFilter('category_id', 'c');
# If you want to filter on prices greater than specific value
$filter3 = new BasicFilter('unit_price', 'p', '>=');
# If you want to filter on prices greater than specific value
$filter4 = new BasicFilter('unit_price', 'p', '<=');
$filter_condition = new FilterCondition();
$filter_condition->addFilter($filter1);
$filter_condition->addFilter($filter2);
$filter_condition->addFilter($filter3, 'price_from');
$filter_condition->addFilter($filter4, 'price_to');
# Filter on color 'blue' or 'yellow', with category 'accessory', and price between 50 and 100
$filter_condition>getWhere([
'color' => ['blue', 'yellow'],
'category' => ['accessory'],
'price_from' => 50,
'price_to' => 100,
]);
use NMarniesse\PommFilter\FilterCondition;
use NMarniesse\PommFilter\FilterType\DateTimeFilter;
# Create DateTimeFilter
$filter1 = new DateTimeFilter('created_at', '', '>=');
$filter2 = new DateTimeFilter('created_at', '', '<=');
$filter_condition->addFilter($filter1, 'created_date_from');
$filter_condition->addFilter($filter2, 'created_date_to');
# Filter on color 'blue' or 'yellow', with category 'accessory', and price between 50 and 100
$filter_condition>getWhere([
'created_date_from' => '2010-01-01T00:00:00+00',
'created_date_to' => '2010-12-31T23:59:59+00',
]);
use NMarniesse\PommFilter\FilterCondition;
use NMarniesse\PommFilter\FilterType\DateTimeFilter;
# Create BooleanFilter
$filter1 = new BooleanFilter('is_new');
$filter_condition->addFilter($filter1);
# Filter on true value
$filter_condition>getWhere([
'is_new' => true, // Any value different from false, 'inactive', 'false', '0', 0
]);
# Filter on true value
$filter_condition>getWhere([
'is_new' => false, // Any value among the values false, 'inactive', 'false', '0', 0
]);
use NMarniesse\PommFilter\FilterCondition;
use NMarniesse\PommFilter\FilterType\HstoreFilter;
# Create HstoreFilter
$filter1 = new HstoreFilter('city', 'full_address');
$filter2 = new HstoreFilter('country_code', 'full_address');
$filter_condition->addFilter($filter1);
$filter_condition->addFilter($filter2);
# Filter on city value
$filter_condition>getWhere([
'city' => 'Paris',
]);
# Filter on country_code value
$filter_condition>getWhere([
'country_code' => 'FR',
]);
use NMarniesse\PommFilter\FilterCondition;
use NMarniesse\PommFilter\FilterType\RangeFilter;
use NMarniesse\PommFilter\ValueType\RangeValue;
# Create a RangeFilter
$filter1 = new RangeFilter('score_range');
$filter2 = new RangeFilter('lifetime');
$filter_condition->addFilter($filter1);
$filter_condition->addFilter($filter2);
# Filter entities which have a score 10 and be active in 2010 january
$filter_condition>getWhere([
'score_range' => 10,
'lifetime' => new RangeValue(
new \DateTime('2010-01-01 00:00:00+00:00'),
new \DateTime('2010-12-31 23:59:59+00:00')
),
]);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.