api-skeletons / zf-doctrine-repository-query-provider
QueryProviders in Doctrine Repositories
Requires
Requires (Dev)
- api-skeletons/zf-oauth2-doctrine: *
- phpunit/phpunit: ^5.6
- squizlabs/php_codesniffer: ^2.7 || ^3.0
- zendframework/zend-coding-standard: ~1.0.0
- zendframework/zend-i18n: ^2.7.3
- zendframework/zend-log: ^2.9.1
- zendframework/zend-serializer: ^2.8
- zendframework/zend-test: ^2.6.1 || ^3.0.1
- zfcampus/zf-apigility-provider: ^1.2
This package is auto-updated.
Last update: 2024-10-11 15:05:32 UTC
README
A plugin for zf-doctrine-repository to integrate Doctrine in Apigility Query Providers.
This allows you to fetch entities using the same business logic and filtering your Query Providers use. Useful for an RPC where an entity may be required and must have access to the current user. Can be used throughout the application to apply business rules for entity access to the current user.
The intention of this module is to solve the problem of repeated code to validate if a user has access to a given entity.
Installation
Installation of this module uses composer. For composer documentation, please refer to getcomposer.org.
composer require api-skeletons/zf-doctrine-repository-query-provider
Once installed, add ZF\Doctrine\Repository\Query\Provider
to your list of modules inside
config/application.config.php
or config/modules.config.php
.
zf-component-installer
If you use zf-component-installer, that plugin will install zf-doctrine-repository-query-provider as a module for you.
Configuration
This repository plugin provides access to find
, findOneBy
, findBy
, and findAll
using the query providers already
a part of your application.
To add entities with query providers you should copy file config/zf-doctrine-repository-query-provider.global.php.dist
to your autoload directory and rename to config/zf-doctrine-repository-query-provider.global.php
and add each entity
you wish to use with this plugin to that configuration.
Use
These functions mirror the default functions find
, findOneBy
, findBy
, and findAll
.
Return an entity by id or null
$objectManager ->getRepository('Database\Entity\Project') ->plugin('queryProvider') ->find($id) ;
Return one entity based on filters
$objectManager ->getRepository('Database\Entity\Project') ->plugin('queryProvider') ->findOneBy([ 'name' => $name );
Return an array of entities based on filters
$objectManager ->getRepository('Database\Entity\Project') ->plugin('queryProvider') ->findBy([ 'name' => $name );
Return all entities the Query Provider provides
$objectManager ->getRepository('Database\Entity\Project') ->plugin('queryProvider') ->findAll() ;
The findBy* functions also take arguments for sorting, limit, and offset.