<?php
Namespace Database;

class TableDataGateway
{
    private $pdo;
    
    public function __construct($pdo)
    {
        $this->pdo = $pdo;
    }
    
    public function getBalance($assetid = false)
    {
        if (!empty($assetid) && gettype($assetid)!=='integer') {
            throw new \Exception('Invalid id in request for balance');
        }
        
        $query = "
            SELECT * FROM `assets`" . (($assetid) ? " WHERE `assetid` = '$assetid'" : "") . " GROUP BY `assetid`
        ";
        
        $assetBalance = $this->pdo->query($query)->fetchAll(\PDO::FETCH_KEY_PAIR);
        
        if (empty($assetBalance) && !empty($assetid)) {
            throw new \Exception('No values for requested asset');
        }
        if (empty($assetBalance)) {
            throw new \Exception('No assets in database');
        }
        
        return $assetBalance;
    }

}

# $tdg = new Database\TableDataGateway($pdo);
# 
# 1) $tdg->getBalance(); / $tdg->getBalance(0); / $tdg->getBalance(NULL);   --> возвращает массив ['assetid'=>количество, ...]
# 2) $tdg->getBalance(666); --> возвращает массив ['666'=>количество]
# 3) $tdg->getBalance(-1);  --> выбрасывает исключение
# 4) $tdg->getBalance('я строка');  --> выбрасывает исключение
# 5) $tdg->getBalance();  --> если в базе 0 записей, выбрасывает исключение