*/ class ModelMapper extends QBMapper { public function __construct(IDBConnection $db) { parent::__construct($db, 'suspicious_login_model'); } public function find(int $id): Model { $qb = $this->db->getQueryBuilder(); $query = $qb->select('*') ->from($this->getTableName()) ->where($qb->expr()->eq('id', $qb->createNamedParameter($id))); return $this->findEntity($query); } /** * @param string $addressType * * @return Model * @throws DoesNotExistException */ public function findLatest(string $addressType): Model { $qb = $this->db->getQueryBuilder(); $query = $qb->select('*') ->from($this->getTableName()) ->where($qb->expr()->eq('address_type', $qb->createNamedParameter($addressType))) ->orderBy('created_at', 'desc') ->setMaxResults(1); return $this->findEntity($query); } /** * @param int $max maximum number of models * @param string $addressType * * @return Model[] */ public function findMostRecent(int $max, string $addressType): array { $qb = $this->db->getQueryBuilder(); $query = $qb->select('*') ->from($this->getTableName()) ->where($qb->expr()->eq('address_type', $qb->createNamedParameter($addressType))) ->orderBy('created_at', 'desc') ->setMaxResults($max); return $this->findEntities($query); } }