PHP code example of paliari / doctrine-ransack
1. Go to this page and download the library: Download paliari/doctrine-ransack 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/ */
paliari / doctrine-ransack example snippets
use Paliari\Doctrine\Ransack;
use Paliari\Doctrine\RansackConfig;
$ransack = new Ransack(new RansackConfig($entityManager));
use Paliari\Doctrine\Ransack;
use Paliari\Doctrine\RansackConfig;
use Paliari\Doctrine\VO\RansackOrderByVO;
use Paliari\Doctrine\VO\RansackParamsVO;
$entityName = User::class;
$alias = 't';
$paramsVO = new RansackParamsVO();
$paramsVO->where = [
'person.address.street_cont' => 'Av% Brasil',
'or' => [
'name_eq' => 'Jhon',
'email_start' => 'jhon',
'person.address.city_eq' => 'Maringá',
],
'id_order_by' => 'asc',
];
$paramsVO->orderBy = [
new RansackOrderByVO(['field' => 'person.name', 'order' => 'ASC']),
new RansackOrderByVO(['field' => 'person.id', 'order' => 'DESC']),
];
$paramsVO->groupBy = [
'person.name',
'person.address_id',
];
$qb = $entityManager->createQueryBuilder()->from($entityName, $alias);
$ransackBuilder = $this->ransack
->query($qb, $entityName, $alias)
->
use Doctrine\ORM\Query\Expr\Join;
use Paliari\Doctrine\CustomAssociationInterface;
use Paliari\Doctrine\VO\RelationVO;
use Paliari\Doctrine\VO\JoinVO;
use Person;
use User;
class CustomAssociation implements CustomAssociationInterface
{
public function __invoke(string $entityName, string $alias, string $field): ?RelationVO
{
if (User::class === $entityName && 'custom' == $field) {
$relationVO = new RelationVO();
$relationVO->entityName = $entityName;
$relationVO->fieldName = $field;
$relationVO->targetEntity = Person::class;
$joinVO = new JoinVO();
$joinVO->join = Person::class;
$joinVO->alias = "{$alias}_$field";
$joinVO->conditionType = Join::WITH;
$joinVO->condition = "$alias.email = $joinVO->alias.email";
$relationVO->join = $joinVO;
return $relationVO;
}
return null;
}
}
use Paliari\Doctrine\Ransack;
use Paliari\Doctrine\RansackConfig;
$customAssociation = new CustomAssociation();
$config = new RansackConfig($entityManager, $customAssociation);
$ransack = new Ransack($config);
$entityName = User::class;
$alias = 't';
$paramsVO = new RansackParamsVO();
$paramsVO->where = [
'custom.email_eq' => '[email protected] ',
];
$
$where = [
'name_cont' => 'Jhon',
'or' => [
'person.name_start' => 'Jhon',
'person.email_end' => '@gmail.com',
'and' => [
'person.address.city_eq' => 'Maringá',
'person.address.state_eq' => 'PR',
],
],
];
json
{"col_in": [13, 21, 124, 525]}
json
{"col_not_in": [13, 21, 124, 525]}
json
{"col_not_null": null}