2017 © Pedro Peláez
 

library query-object-data-source

Ublaboo Datagrid data source bindings for Kdyby Doctrine query objects.

image

adt/query-object-data-source

Ublaboo Datagrid data source bindings for Kdyby Doctrine query objects.

  • Monday, May 7, 2018
  • by michallohnisky
  • Repository
  • 6 Watchers
  • 0 Stars
  • 629 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 8 Versions
  • 88 % Grown

The README.md

Ublaboo Datagrid data source bindings for Kdyby Doctrine query objects

Installation

via composer:, (*1)

composer require adt/query-object-data-source

and in config.neon:, (*2)

extensions:
    - ADT\QueryObjectDataSource\DI\QueryObjectDataSourceExtension

Usage

Inject or autowire QueryObjectDataSourceFactory:, (*3)

/** @var \ADT\QueryObjectDataSource\IQueryObjectDataSourceFactory @autowire */
protected $queryObjectDataSourceFactory;

Create query object and wrap it as data source:, (*4)

$qo = /* create query object */;

$dataSource = $this->queryObjectDataSourceFactory->create($qo, "id")
    ->setSortCallback(function($queryObject, \Ublaboo\DataGrid\Utils\Sorting $sorting) {
        $sort = $sorting->getSort();

        if (!empty($sort)) {
            foreach ($sort as $order => $by) {
                $queryObject->order("e.$order", $by);
            }
        }
    })
    ->setFilterCallback(function ($queryObject, array $filter) {
        foreach ($filter as $field => $value) {         
            switch ($column) {
                case 'dateRange':
                    $queryObject->byDateRange(QueryObjectDataSource::parseFilterDateRange($fieldSet));
                    break;
                case 'date':
                    $queryObject->byDate(QueryObjectDataSource::parseFilterDate($fieldSet));
                    break;
                default:
                    $queryObject->{'by' . $field}($value);
            }
        }
    })
    ->setLimitCallback(function ($offset, $limit, $defaultCallback) use ($query, $itemRepository) {
        // This callback is not necessary, but you can do your stuff with $offset and $limit here.

        $defaultCallback(); // Run the default action
    });

$grid->setDataSource($queryObjectDataSource);

You can use per column condition and sortable callbacks as well:, (*5)

$datagrid->addColumnText('email', 'entity.user.email')
    ->setSortable()
    ->setSortableCallback(function (UserQueryObject $userQuery, $email) {
        $userQuery->orderByEmail($email);
    })
    ->setFilterText()
    ->setCondition(function (UserQueryObject $userQuery, $email) {
        $userQuery->searchInEmail($email);
    });

If you implement \ADT\QueryObjectDataSource\IQueryObject on your QueryObject, those methods will be called when there is no per column callbacks provided. Function searchIn($column, $value) will be called on text fields and equalIn($column, $value) on other column types., (*6)

The Versions

07/05 2018

dev-master

9999999-dev

Ublaboo Datagrid data source bindings for Kdyby Doctrine query objects.

  Sources   Download

MIT GPL-3.0 BSD-3-Clause GPL-2.0

The Development Requires

07/05 2018

v1.2.0

1.2.0.0

Ublaboo Datagrid data source bindings for Kdyby Doctrine query objects.

  Sources   Download

MIT GPL-3.0 BSD-3-Clause GPL-2.0

The Development Requires

20/03 2018

v1.1.3

1.1.3.0

Ublaboo Datagrid data source bindings for Kdyby Doctrine query objects.

  Sources   Download

MIT GPL-3.0 BSD-3-Clause GPL-2.0

The Development Requires

20/03 2018

v1.1.2

1.1.2.0

Ublaboo Datagrid data source bindings for Kdyby Doctrine query objects.

  Sources   Download

MIT GPL-3.0 BSD-3-Clause GPL-2.0

The Development Requires

20/09 2017

v1.1.1

1.1.1.0

Ublaboo Datagrid data source bindings for Kdyby Doctrine query objects.

  Sources   Download

MIT GPL-3.0 BSD-3-Clause GPL-2.0

The Development Requires

20/09 2017

dev-f-ability-to-use-datefilter

dev-f-ability-to-use-datefilter

Ublaboo Datagrid data source bindings for Kdyby Doctrine query objects.

  Sources   Download

MIT GPL-3.0 BSD-3-Clause GPL-2.0

The Development Requires

19/09 2017

v1.1.0

1.1.0.0

Ublaboo Datagrid data source bindings for Kdyby Doctrine query objects.

  Sources   Download

MIT GPL-3.0 BSD-3-Clause GPL-2.0

The Development Requires

14/02 2017

v1.0.0

1.0.0.0

Ublaboo Datagrid data source bindings for Kdyby Doctrine query objects.

  Sources   Download

MIT GPL-3.0 BSD-3-Clause GPL-2.0

The Development Requires