api-skeletons/zf-doctrine-repository-query-provider

QueryProviders in Doctrine Repositories

1.0.1 2017-07-11 01:12 UTC

This package is auto-updated.

Last update: 2020-08-11 05:36:34 UTC


README

Build Status Total Downloads

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.