2009-01-13 21:56:43 +00:00
< ? php
2009-05-14 18:34:12 +00:00
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* " AS IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT
* LIMITED TO , THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL ,
* SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT
* LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE ,
* DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
* ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*
* This software consists of voluntary contributions made by many individuals
2012-05-26 14:37:00 +02:00
* and is licensed under the MIT license . For more information , see
2009-05-14 18:34:12 +00:00
* < http :// www . doctrine - project . org >.
2009-01-13 21:56:43 +00:00
*/
2009-01-22 19:38:10 +00:00
namespace Doctrine\ORM\Internal\Hydration ;
2012-10-12 13:53:20 +02:00
use Doctrine\ORM\NoResultException ;
use Doctrine\ORM\NonUniqueResultException ;
2009-01-22 19:38:10 +00:00
2009-01-13 21:56:43 +00:00
/**
2009-12-18 13:20:22 +00:00
* Hydrator that hydrates a single scalar value from the result set .
2009-01-13 21:56:43 +00:00
*
2011-11-02 22:08:24 -02:00
* @ since 2.0
2009-05-14 18:34:12 +00:00
* @ author Roman Borschel < roman @ code - factory . org >
2011-11-02 22:08:24 -02:00
* @ author Guilherme Blanco < guilhermeblanco @ hotmail . com >
2009-01-13 21:56:43 +00:00
*/
2009-01-22 19:38:10 +00:00
class SingleScalarHydrator extends AbstractHydrator
2009-01-13 21:56:43 +00:00
{
2011-11-02 22:08:24 -02:00
/**
2011-12-19 22:56:19 +01:00
* { @ inheritdoc }
2011-11-02 22:08:24 -02:00
*/
protected function hydrateAllData ()
2009-01-13 21:56:43 +00:00
{
2011-11-02 22:08:24 -02:00
$data = $this -> _stmt -> fetchAll ( \PDO :: FETCH_ASSOC );
$numRows = count ( $data );
2011-12-19 22:56:19 +01:00
2011-11-02 22:08:24 -02:00
if ( $numRows === 0 ) {
throw new NoResultException ();
}
2011-12-19 22:56:19 +01:00
2014-04-16 05:44:54 +00:00
if ( $numRows > 1 ) {
2013-10-02 14:12:35 +02:00
throw new NonUniqueResultException ( 'The query returned multiple rows. Change the query or use a different result function like getScalarResult().' );
2009-01-13 21:56:43 +00:00
}
2014-04-16 05:44:54 +00:00
if ( count ( $data [ key ( $data )]) > 1 ) {
2014-04-17 01:09:33 +00:00
throw new NonUniqueResultException ( 'The query returned a row containing multiple columns. Change the query or use a different result function like getScalarResult().' );
2014-04-16 05:44:54 +00:00
}
2011-12-19 22:56:19 +01:00
2014-04-28 02:38:51 +00:00
$result = $this -> gatherScalarRowData ( $data [ key ( $data )]);
2011-12-19 22:56:19 +01:00
2009-01-13 21:56:43 +00:00
return array_shift ( $result );
}
2012-05-26 14:37:00 +02:00
}