40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php declare(strict_types=1);
 | |
| 
 | |
| namespace BitBadger\PDODocument;
 | |
| 
 | |
| use BitBadger\PDODocument\Mapper\CountMapper;
 | |
| 
 | |
| /**
 | |
|  * Functions to count documents
 | |
|  */
 | |
| class Count
 | |
| {
 | |
|     /**
 | |
|      * Count all documents in a table
 | |
|      *
 | |
|      * @param string $tableName The name of the table in which documents should be counted
 | |
|      * @return int The count of documents in the table
 | |
|      * @throws DocumentException If one is encountered
 | |
|      */
 | |
|     public static function all(string $tableName): int
 | |
|     {
 | |
|         return Custom::scalar(Query\Count::all($tableName), [], new CountMapper());
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Count matching documents using a comparison on JSON fields
 | |
|      *
 | |
|      * @param string $tableName The name of the table in which documents should be counted
 | |
|      * @param array|Field[] $fields The field comparison to match
 | |
|      * @param FieldMatch|null $match How to handle multiple conditions (optional; defaults to All)
 | |
|      * @return int The count of documents matching the field comparison
 | |
|      * @throws DocumentException If one is encountered
 | |
|      */
 | |
|     public static function byFields(string $tableName, array $fields, ?FieldMatch $match = null): int
 | |
|     {
 | |
|         $namedFields = Parameters::nameFields($fields);
 | |
|         return Custom::scalar(Query\Count::byFields($tableName, $namedFields, $match),
 | |
|             Parameters::addFields($namedFields, []), new CountMapper());
 | |
|     }
 | |
| }
 |