42 lines
1000 B
PHP
42 lines
1000 B
PHP
<?php
|
|
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: filip
|
|
* Date: 5/16/16
|
|
* Time: 1:13 PM.
|
|
*/
|
|
|
|
namespace Query;
|
|
|
|
class Price
|
|
{
|
|
public static function selectRange($minAlias = 'min', $maxAlias = 'max')
|
|
{
|
|
return self::doSelectRange($minAlias, $maxAlias, 'COALESCE(pv.price, p.price)');
|
|
}
|
|
|
|
public static function selectProductRange($minAlias = 'min', $maxAlias = 'max')
|
|
{
|
|
return self::doSelectRange($minAlias, $maxAlias, 'p.price');
|
|
}
|
|
|
|
private static function doSelectRange($minAlias, $maxAlias, $priceField)
|
|
{
|
|
return function (QueryBuilder $qb) use ($minAlias, $maxAlias, $priceField) {
|
|
$select = Product::withVatAndDiscount($qb, $priceField);
|
|
$qb->joinVatsOnProducts();
|
|
|
|
$qb->andWhere("{$priceField} > 0");
|
|
|
|
return sprintf(
|
|
'min(%s) %s, max(%s) %s',
|
|
$select,
|
|
$minAlias,
|
|
$select,
|
|
$maxAlias
|
|
);
|
|
};
|
|
}
|
|
}
|