Files
CHIEFSOFT\ameye df3a033196 first commit
2024-06-08 17:09:23 -04:00

90 lines
2.4 KiB
PHP

<?php
/**
* @file classes/services/queryBuilders/interfaces/EntityQueryBuilderInterface.php
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @class EntityQueryBuilderInterface
*
* @ingroup services_query_builders
*
* @brief An interface that defines required methods for
* a QueryBuilder that retrieves one of the application's
* entities.
*/
namespace PKP\services\queryBuilders\interfaces;
use Illuminate\Database\Query\Builder;
interface EntityQueryBuilderInterface
{
/**
* Get a count of the number of rows that match the select
* conditions configured in this query builder.
*
* @return int
*/
public function getCount();
/**
* Get a list of ids that match the select conditions
* configured in this query builder.
*
* @return array
*/
public function getIds();
/**
* Get a query builder with the applied select, where and
* join clauses based on builder's configuration
*
* This returns an instance of Laravel's query builder.
*
* Call the `get` method on a query builder to return an array
* of matching rows.
*
* ```php
* $qb = new \PKP\services\queryBuilders\PublicationQueryBuilder();
* $result = $qb
* ->filterByContextIds(1)
* ->getQuery()
* ->get();
* ```
*
* Or use the query builder to retrieve objects from a DAO.
* This example retrieves the first 20 matching Publications.
*
* ```php
* $qo = $qb
* ->filterByContextIds(1)
* ->getQuery();
* $result = DAORegistry::getDAO('ReviewRoundDAO')->retrieveRange(
* $qo->toSql(),
* $qo->getBindings(),
* new DBResultRange(20, null, 0);
* );
* $queryResults = new DAOResultFactory($result, $reviewRoundDao, '_fromRow');
* $iteratorOfObjects = $queryResults->toIterator();
* ```
*
* Laravel's other query builder methods, such as `first`
* and `pluck`, can also be used.
*
* ```
* $qb = new \PKP\services\queryBuilders\PublicationQueryBuilder();
* $result = $qb
* ->filterByContextIds(1)
* ->getQuery()
* ->first();
* ```
*
* See: https://laravel.com/docs/5.5/queries
*
* @return Builder
*/
public function getQuery();
}