Overview

Namespaces

  • PHP
  • Thelia
    • Action
    • Controller
    • Core
      • Bundle
      • Event
      • EventListener
      • Template
    • Exception
    • Log
      • Destination
    • Model
      • map
      • om
    • Routing
      • Matcher
    • Tools

Classes

  • BaseAccessory
  • BaseAccessoryPeer
  • BaseAccessoryQuery
  • BaseAddress
  • BaseAddressPeer
  • BaseAddressQuery
  • BaseAdmin
  • BaseAdminGroup
  • BaseAdminGroupPeer
  • BaseAdminGroupQuery
  • BaseAdminLog
  • BaseAdminLogPeer
  • BaseAdminLogQuery
  • BaseAdminPeer
  • BaseAdminQuery
  • BaseArea
  • BaseAreaPeer
  • BaseAreaQuery
  • BaseAttribute
  • BaseAttributeAv
  • BaseAttributeAvDesc
  • BaseAttributeAvDescPeer
  • BaseAttributeAvDescQuery
  • BaseAttributeAvI18n
  • BaseAttributeAvI18nPeer
  • BaseAttributeAvI18nQuery
  • BaseAttributeAvPeer
  • BaseAttributeAvQuery
  • BaseAttributeCategory
  • BaseAttributeCategoryPeer
  • BaseAttributeCategoryQuery
  • BaseAttributeCombination
  • BaseAttributeCombinationPeer
  • BaseAttributeCombinationQuery
  • BaseAttributeDesc
  • BaseAttributeDescPeer
  • BaseAttributeDescQuery
  • BaseAttributeI18n
  • BaseAttributeI18nPeer
  • BaseAttributeI18nQuery
  • BaseAttributePeer
  • BaseAttributeQuery
  • BaseCategory
  • BaseCategoryDesc
  • BaseCategoryDescPeer
  • BaseCategoryDescQuery
  • BaseCategoryI18n
  • BaseCategoryI18nPeer
  • BaseCategoryI18nQuery
  • BaseCategoryPeer
  • BaseCategoryQuery
  • BaseCategoryVersion
  • BaseCategoryVersionPeer
  • BaseCategoryVersionQuery
  • BaseCombination
  • BaseCombinationPeer
  • BaseCombinationQuery
  • BaseConfig
  • BaseConfigDesc
  • BaseConfigDescPeer
  • BaseConfigDescQuery
  • BaseConfigI18n
  • BaseConfigI18nPeer
  • BaseConfigI18nQuery
  • BaseConfigPeer
  • BaseConfigQuery
  • BaseContent
  • BaseContentAssoc
  • BaseContentAssocPeer
  • BaseContentAssocQuery
  • BaseContentDesc
  • BaseContentDescPeer
  • BaseContentDescQuery
  • BaseContentFolder
  • BaseContentFolderPeer
  • BaseContentFolderQuery
  • BaseContentI18n
  • BaseContentI18nPeer
  • BaseContentI18nQuery
  • BaseContentPeer
  • BaseContentQuery
  • BaseContentVersion
  • BaseContentVersionPeer
  • BaseContentVersionQuery
  • BaseCountry
  • BaseCountryDesc
  • BaseCountryDescPeer
  • BaseCountryDescQuery
  • BaseCountryI18n
  • BaseCountryI18nPeer
  • BaseCountryI18nQuery
  • BaseCountryPeer
  • BaseCountryQuery
  • BaseCoupon
  • BaseCouponOrder
  • BaseCouponOrderPeer
  • BaseCouponOrderQuery
  • BaseCouponPeer
  • BaseCouponQuery
  • BaseCouponRule
  • BaseCouponRulePeer
  • BaseCouponRuleQuery
  • BaseCurrency
  • BaseCurrencyPeer
  • BaseCurrencyQuery
  • BaseCustomer
  • BaseCustomerPeer
  • BaseCustomerQuery
  • BaseCustomerTitle
  • BaseCustomerTitleDesc
  • BaseCustomerTitleDescPeer
  • BaseCustomerTitleDescQuery
  • BaseCustomerTitleI18n
  • BaseCustomerTitleI18nPeer
  • BaseCustomerTitleI18nQuery
  • BaseCustomerTitlePeer
  • BaseCustomerTitleQuery
  • BaseDelivzone
  • BaseDelivzonePeer
  • BaseDelivzoneQuery
  • BaseDocument
  • BaseDocumentDesc
  • BaseDocumentDescPeer
  • BaseDocumentDescQuery
  • BaseDocumentI18n
  • BaseDocumentI18nPeer
  • BaseDocumentI18nQuery
  • BaseDocumentPeer
  • BaseDocumentQuery
  • BaseFeature
  • BaseFeatureAv
  • BaseFeatureAvDesc
  • BaseFeatureAvDescPeer
  • BaseFeatureAvDescQuery
  • BaseFeatureAvI18n
  • BaseFeatureAvI18nPeer
  • BaseFeatureAvI18nQuery
  • BaseFeatureAvPeer
  • BaseFeatureAvQuery
  • BaseFeatureCategory
  • BaseFeatureCategoryPeer
  • BaseFeatureCategoryQuery
  • BaseFeatureDesc
  • BaseFeatureDescPeer
  • BaseFeatureDescQuery
  • BaseFeatureI18n
  • BaseFeatureI18nPeer
  • BaseFeatureI18nQuery
  • BaseFeaturePeer
  • BaseFeatureProd
  • BaseFeatureProdPeer
  • BaseFeatureProdQuery
  • BaseFeatureQuery
  • BaseFolder
  • BaseFolderDesc
  • BaseFolderDescPeer
  • BaseFolderDescQuery
  • BaseFolderI18n
  • BaseFolderI18nPeer
  • BaseFolderI18nQuery
  • BaseFolderPeer
  • BaseFolderQuery
  • BaseFolderVersion
  • BaseFolderVersionPeer
  • BaseFolderVersionQuery
  • BaseGroup
  • BaseGroupDesc
  • BaseGroupDescPeer
  • BaseGroupDescQuery
  • BaseGroupI18n
  • BaseGroupI18nPeer
  • BaseGroupI18nQuery
  • BaseGroupModule
  • BaseGroupModulePeer
  • BaseGroupModuleQuery
  • BaseGroupPeer
  • BaseGroupQuery
  • BaseGroupResource
  • BaseGroupResourcePeer
  • BaseGroupResourceQuery
  • BaseImage
  • BaseImageDesc
  • BaseImageDescPeer
  • BaseImageDescQuery
  • BaseImageI18n
  • BaseImageI18nPeer
  • BaseImageI18nQuery
  • BaseImagePeer
  • BaseImageQuery
  • BaseLang
  • BaseLangPeer
  • BaseLangQuery
  • BaseMessage
  • BaseMessageDesc
  • BaseMessageDescPeer
  • BaseMessageDescQuery
  • BaseMessageI18n
  • BaseMessageI18nPeer
  • BaseMessageI18nQuery
  • BaseMessagePeer
  • BaseMessageQuery
  • BaseMessageVersion
  • BaseMessageVersionPeer
  • BaseMessageVersionQuery
  • BaseModuleDesc
  • BaseModuleDescPeer
  • BaseModuleDescQuery
  • BaseModuleI18n
  • BaseModuleI18nPeer
  • BaseModuleI18nQuery
  • BaseModulePeer
  • BaseOrder
  • BaseOrderAddress
  • BaseOrderAddressPeer
  • BaseOrderAddressQuery
  • BaseOrderFeature
  • BaseOrderFeaturePeer
  • BaseOrderFeatureQuery
  • BaseOrderPeer
  • BaseOrderProduct
  • BaseOrderProductPeer
  • BaseOrderProductQuery
  • BaseOrderQuery
  • BaseOrderStatus
  • BaseOrderStatusDesc
  • BaseOrderStatusDescPeer
  • BaseOrderStatusDescQuery
  • BaseOrderStatusI18n
  • BaseOrderStatusI18nPeer
  • BaseOrderStatusI18nQuery
  • BaseOrderStatusPeer
  • BaseOrderStatusQuery
  • BaseProduct
  • BaseProductCategory
  • BaseProductCategoryPeer
  • BaseProductCategoryQuery
  • BaseProductDesc
  • BaseProductDescPeer
  • BaseProductDescQuery
  • BaseProductI18n
  • BaseProductI18nPeer
  • BaseProductI18nQuery
  • BaseProductPeer
  • BaseProductQuery
  • BaseProductVersion
  • BaseProductVersionPeer
  • BaseProductVersionQuery
  • BaseResource
  • BaseResourceDesc
  • BaseResourceDescPeer
  • BaseResourceDescQuery
  • BaseResourceI18n
  • BaseResourceI18nPeer
  • BaseResourceI18nQuery
  • BaseResourcePeer
  • BaseResourceQuery
  • BaseRewriting
  • BaseRewritingPeer
  • BaseRewritingQuery
  • BaseStock
  • BaseStockPeer
  • BaseStockQuery
  • BaseTax
  • BaseTaxDesc
  • BaseTaxDescPeer
  • BaseTaxDescQuery
  • BaseTaxI18n
  • BaseTaxI18nPeer
  • BaseTaxI18nQuery
  • BaseTaxPeer
  • BaseTaxQuery
  • BaseTaxRule
  • BaseTaxRuleCountry
  • BaseTaxRuleCountryPeer
  • BaseTaxRuleCountryQuery
  • BaseTaxRuleDesc
  • BaseTaxRuleDescPeer
  • BaseTaxRuleDescQuery
  • BaseTaxRuleI18n
  • BaseTaxRuleI18nPeer
  • BaseTaxRuleI18nQuery
  • BaseTaxRulePeer
  • BaseTaxRuleQuery
  • Overview
  • Namespace
  • Class
  • Tree
   1: <?php
   2: 
   3: namespace Thelia\Model\om;
   4: 
   5: use \BasePeer;
   6: use \Criteria;
   7: use \PDO;
   8: use \PDOStatement;
   9: use \Propel;
  10: use \PropelException;
  11: use \PropelPDO;
  12: use Thelia\Model\CombinationPeer;
  13: use Thelia\Model\ProductPeer;
  14: use Thelia\Model\Stock;
  15: use Thelia\Model\StockPeer;
  16: use Thelia\Model\map\StockTableMap;
  17: 
  18: /**
  19:  * Base static class for performing query and update operations on the 'stock' table.
  20:  *
  21:  *
  22:  *
  23:  * @package propel.generator.Thelia.Model.om
  24:  */
  25: abstract class BaseStockPeer
  26: {
  27: 
  28:     /** the default database name for this class */
  29:     const DATABASE_NAME = 'thelia';
  30: 
  31:     /** the table name for this class */
  32:     const TABLE_NAME = 'stock';
  33: 
  34:     /** the related Propel class for this table */
  35:     const OM_CLASS = 'Thelia\\Model\\Stock';
  36: 
  37:     /** the related TableMap class for this table */
  38:     const TM_CLASS = 'StockTableMap';
  39: 
  40:     /** The total number of columns. */
  41:     const NUM_COLUMNS = 7;
  42: 
  43:     /** The number of lazy-loaded columns. */
  44:     const NUM_LAZY_LOAD_COLUMNS = 0;
  45: 
  46:     /** The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS) */
  47:     const NUM_HYDRATE_COLUMNS = 7;
  48: 
  49:     /** the column name for the ID field */
  50:     const ID = 'stock.ID';
  51: 
  52:     /** the column name for the COMBINATION_ID field */
  53:     const COMBINATION_ID = 'stock.COMBINATION_ID';
  54: 
  55:     /** the column name for the PRODUCT_ID field */
  56:     const PRODUCT_ID = 'stock.PRODUCT_ID';
  57: 
  58:     /** the column name for the INCREASE field */
  59:     const INCREASE = 'stock.INCREASE';
  60: 
  61:     /** the column name for the VALUE field */
  62:     const VALUE = 'stock.VALUE';
  63: 
  64:     /** the column name for the CREATED_AT field */
  65:     const CREATED_AT = 'stock.CREATED_AT';
  66: 
  67:     /** the column name for the UPDATED_AT field */
  68:     const UPDATED_AT = 'stock.UPDATED_AT';
  69: 
  70:     /** The default string format for model objects of the related table **/
  71:     const DEFAULT_STRING_FORMAT = 'YAML';
  72: 
  73:     /**
  74:      * An identiy map to hold any loaded instances of Stock objects.
  75:      * This must be public so that other peer classes can access this when hydrating from JOIN
  76:      * queries.
  77:      * @var        array Stock[]
  78:      */
  79:     public static $instances = array();
  80: 
  81: 
  82:     /**
  83:      * holds an array of fieldnames
  84:      *
  85:      * first dimension keys are the type constants
  86:      * e.g. StockPeer::$fieldNames[StockPeer::TYPE_PHPNAME][0] = 'Id'
  87:      */
  88:     protected static $fieldNames = array (
  89:         BasePeer::TYPE_PHPNAME => array ('Id', 'CombinationId', 'ProductId', 'Increase', 'Value', 'CreatedAt', 'UpdatedAt', ),
  90:         BasePeer::TYPE_STUDLYPHPNAME => array ('id', 'combinationId', 'productId', 'increase', 'value', 'createdAt', 'updatedAt', ),
  91:         BasePeer::TYPE_COLNAME => array (StockPeer::ID, StockPeer::COMBINATION_ID, StockPeer::PRODUCT_ID, StockPeer::INCREASE, StockPeer::VALUE, StockPeer::CREATED_AT, StockPeer::UPDATED_AT, ),
  92:         BasePeer::TYPE_RAW_COLNAME => array ('ID', 'COMBINATION_ID', 'PRODUCT_ID', 'INCREASE', 'VALUE', 'CREATED_AT', 'UPDATED_AT', ),
  93:         BasePeer::TYPE_FIELDNAME => array ('id', 'combination_id', 'product_id', 'increase', 'value', 'created_at', 'updated_at', ),
  94:         BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, )
  95:     );
  96: 
  97:     /**
  98:      * holds an array of keys for quick access to the fieldnames array
  99:      *
 100:      * first dimension keys are the type constants
 101:      * e.g. StockPeer::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
 102:      */
 103:     protected static $fieldKeys = array (
 104:         BasePeer::TYPE_PHPNAME => array ('Id' => 0, 'CombinationId' => 1, 'ProductId' => 2, 'Increase' => 3, 'Value' => 4, 'CreatedAt' => 5, 'UpdatedAt' => 6, ),
 105:         BasePeer::TYPE_STUDLYPHPNAME => array ('id' => 0, 'combinationId' => 1, 'productId' => 2, 'increase' => 3, 'value' => 4, 'createdAt' => 5, 'updatedAt' => 6, ),
 106:         BasePeer::TYPE_COLNAME => array (StockPeer::ID => 0, StockPeer::COMBINATION_ID => 1, StockPeer::PRODUCT_ID => 2, StockPeer::INCREASE => 3, StockPeer::VALUE => 4, StockPeer::CREATED_AT => 5, StockPeer::UPDATED_AT => 6, ),
 107:         BasePeer::TYPE_RAW_COLNAME => array ('ID' => 0, 'COMBINATION_ID' => 1, 'PRODUCT_ID' => 2, 'INCREASE' => 3, 'VALUE' => 4, 'CREATED_AT' => 5, 'UPDATED_AT' => 6, ),
 108:         BasePeer::TYPE_FIELDNAME => array ('id' => 0, 'combination_id' => 1, 'product_id' => 2, 'increase' => 3, 'value' => 4, 'created_at' => 5, 'updated_at' => 6, ),
 109:         BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, )
 110:     );
 111: 
 112:     /**
 113:      * Translates a fieldname to another type
 114:      *
 115:      * @param      string $name field name
 116:      * @param      string $fromType One of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME
 117:      *                         BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM
 118:      * @param      string $toType   One of the class type constants
 119:      * @return string          translated name of the field.
 120:      * @throws PropelException - if the specified name could not be found in the fieldname mappings.
 121:      */
 122:     public static function translateFieldName($name, $fromType, $toType)
 123:     {
 124:         $toNames = StockPeer::getFieldNames($toType);
 125:         $key = isset(StockPeer::$fieldKeys[$fromType][$name]) ? StockPeer::$fieldKeys[$fromType][$name] : null;
 126:         if ($key === null) {
 127:             throw new PropelException("'$name' could not be found in the field names of type '$fromType'. These are: " . print_r(StockPeer::$fieldKeys[$fromType], true));
 128:         }
 129: 
 130:         return $toNames[$key];
 131:     }
 132: 
 133:     /**
 134:      * Returns an array of field names.
 135:      *
 136:      * @param      string $type The type of fieldnames to return:
 137:      *                      One of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME
 138:      *                      BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM
 139:      * @return array           A list of field names
 140:      * @throws PropelException - if the type is not valid.
 141:      */
 142:     public static function getFieldNames($type = BasePeer::TYPE_PHPNAME)
 143:     {
 144:         if (!array_key_exists($type, StockPeer::$fieldNames)) {
 145:             throw new PropelException('Method getFieldNames() expects the parameter $type to be one of the class constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. ' . $type . ' was given.');
 146:         }
 147: 
 148:         return StockPeer::$fieldNames[$type];
 149:     }
 150: 
 151:     /**
 152:      * Convenience method which changes table.column to alias.column.
 153:      *
 154:      * Using this method you can maintain SQL abstraction while using column aliases.
 155:      * <code>
 156:      *      $c->addAlias("alias1", TablePeer::TABLE_NAME);
 157:      *      $c->addJoin(TablePeer::alias("alias1", TablePeer::PRIMARY_KEY_COLUMN), TablePeer::PRIMARY_KEY_COLUMN);
 158:      * </code>
 159:      * @param      string $alias The alias for the current table.
 160:      * @param      string $column The column name for current table. (i.e. StockPeer::COLUMN_NAME).
 161:      * @return string
 162:      */
 163:     public static function alias($alias, $column)
 164:     {
 165:         return str_replace(StockPeer::TABLE_NAME.'.', $alias.'.', $column);
 166:     }
 167: 
 168:     /**
 169:      * Add all the columns needed to create a new object.
 170:      *
 171:      * Note: any columns that were marked with lazyLoad="true" in the
 172:      * XML schema will not be added to the select list and only loaded
 173:      * on demand.
 174:      *
 175:      * @param      Criteria $criteria object containing the columns to add.
 176:      * @param      string   $alias    optional table alias
 177:      * @throws PropelException Any exceptions caught during processing will be
 178:      *       rethrown wrapped into a PropelException.
 179:      */
 180:     public static function addSelectColumns(Criteria $criteria, $alias = null)
 181:     {
 182:         if (null === $alias) {
 183:             $criteria->addSelectColumn(StockPeer::ID);
 184:             $criteria->addSelectColumn(StockPeer::COMBINATION_ID);
 185:             $criteria->addSelectColumn(StockPeer::PRODUCT_ID);
 186:             $criteria->addSelectColumn(StockPeer::INCREASE);
 187:             $criteria->addSelectColumn(StockPeer::VALUE);
 188:             $criteria->addSelectColumn(StockPeer::CREATED_AT);
 189:             $criteria->addSelectColumn(StockPeer::UPDATED_AT);
 190:         } else {
 191:             $criteria->addSelectColumn($alias . '.ID');
 192:             $criteria->addSelectColumn($alias . '.COMBINATION_ID');
 193:             $criteria->addSelectColumn($alias . '.PRODUCT_ID');
 194:             $criteria->addSelectColumn($alias . '.INCREASE');
 195:             $criteria->addSelectColumn($alias . '.VALUE');
 196:             $criteria->addSelectColumn($alias . '.CREATED_AT');
 197:             $criteria->addSelectColumn($alias . '.UPDATED_AT');
 198:         }
 199:     }
 200: 
 201:     /**
 202:      * Returns the number of rows matching criteria.
 203:      *
 204:      * @param      Criteria $criteria
 205:      * @param      boolean $distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead.
 206:      * @param      PropelPDO $con
 207:      * @return int Number of matching rows.
 208:      */
 209:     public static function doCount(Criteria $criteria, $distinct = false, PropelPDO $con = null)
 210:     {
 211:         // we may modify criteria, so copy it first
 212:         $criteria = clone $criteria;
 213: 
 214:         // We need to set the primary table name, since in the case that there are no WHERE columns
 215:         // it will be impossible for the BasePeer::createSelectSql() method to determine which
 216:         // tables go into the FROM clause.
 217:         $criteria->setPrimaryTableName(StockPeer::TABLE_NAME);
 218: 
 219:         if ($distinct && !in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) {
 220:             $criteria->setDistinct();
 221:         }
 222: 
 223:         if (!$criteria->hasSelectClause()) {
 224:             StockPeer::addSelectColumns($criteria);
 225:         }
 226: 
 227:         $criteria->clearOrderByColumns(); // ORDER BY won't ever affect the count
 228:         $criteria->setDbName(StockPeer::DATABASE_NAME); // Set the correct dbName
 229: 
 230:         if ($con === null) {
 231:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_READ);
 232:         }
 233:         // BasePeer returns a PDOStatement
 234:         $stmt = BasePeer::doCount($criteria, $con);
 235: 
 236:         if ($row = $stmt->fetch(PDO::FETCH_NUM)) {
 237:             $count = (int) $row[0];
 238:         } else {
 239:             $count = 0; // no rows returned; we infer that means 0 matches.
 240:         }
 241:         $stmt->closeCursor();
 242: 
 243:         return $count;
 244:     }
 245:     /**
 246:      * Selects one object from the DB.
 247:      *
 248:      * @param      Criteria $criteria object used to create the SELECT statement.
 249:      * @param      PropelPDO $con
 250:      * @return                 Stock
 251:      * @throws PropelException Any exceptions caught during processing will be
 252:      *       rethrown wrapped into a PropelException.
 253:      */
 254:     public static function doSelectOne(Criteria $criteria, PropelPDO $con = null)
 255:     {
 256:         $critcopy = clone $criteria;
 257:         $critcopy->setLimit(1);
 258:         $objects = StockPeer::doSelect($critcopy, $con);
 259:         if ($objects) {
 260:             return $objects[0];
 261:         }
 262: 
 263:         return null;
 264:     }
 265:     /**
 266:      * Selects several row from the DB.
 267:      *
 268:      * @param      Criteria $criteria The Criteria object used to build the SELECT statement.
 269:      * @param      PropelPDO $con
 270:      * @return array           Array of selected Objects
 271:      * @throws PropelException Any exceptions caught during processing will be
 272:      *       rethrown wrapped into a PropelException.
 273:      */
 274:     public static function doSelect(Criteria $criteria, PropelPDO $con = null)
 275:     {
 276:         return StockPeer::populateObjects(StockPeer::doSelectStmt($criteria, $con));
 277:     }
 278:     /**
 279:      * Prepares the Criteria object and uses the parent doSelect() method to execute a PDOStatement.
 280:      *
 281:      * Use this method directly if you want to work with an executed statement durirectly (for example
 282:      * to perform your own object hydration).
 283:      *
 284:      * @param      Criteria $criteria The Criteria object used to build the SELECT statement.
 285:      * @param      PropelPDO $con The connection to use
 286:      * @throws PropelException Any exceptions caught during processing will be
 287:      *       rethrown wrapped into a PropelException.
 288:      * @return PDOStatement The executed PDOStatement object.
 289:      * @see        BasePeer::doSelect()
 290:      */
 291:     public static function doSelectStmt(Criteria $criteria, PropelPDO $con = null)
 292:     {
 293:         if ($con === null) {
 294:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_READ);
 295:         }
 296: 
 297:         if (!$criteria->hasSelectClause()) {
 298:             $criteria = clone $criteria;
 299:             StockPeer::addSelectColumns($criteria);
 300:         }
 301: 
 302:         // Set the correct dbName
 303:         $criteria->setDbName(StockPeer::DATABASE_NAME);
 304: 
 305:         // BasePeer returns a PDOStatement
 306:         return BasePeer::doSelect($criteria, $con);
 307:     }
 308:     /**
 309:      * Adds an object to the instance pool.
 310:      *
 311:      * Propel keeps cached copies of objects in an instance pool when they are retrieved
 312:      * from the database.  In some cases -- especially when you override doSelect*()
 313:      * methods in your stub classes -- you may need to explicitly add objects
 314:      * to the cache in order to ensure that the same objects are always returned by doSelect*()
 315:      * and retrieveByPK*() calls.
 316:      *
 317:      * @param      Stock $obj A Stock object.
 318:      * @param      string $key (optional) key to use for instance map (for performance boost if key was already calculated externally).
 319:      */
 320:     public static function addInstanceToPool($obj, $key = null)
 321:     {
 322:         if (Propel::isInstancePoolingEnabled()) {
 323:             if ($key === null) {
 324:                 $key = (string) $obj->getId();
 325:             } // if key === null
 326:             StockPeer::$instances[$key] = $obj;
 327:         }
 328:     }
 329: 
 330:     /**
 331:      * Removes an object from the instance pool.
 332:      *
 333:      * Propel keeps cached copies of objects in an instance pool when they are retrieved
 334:      * from the database.  In some cases -- especially when you override doDelete
 335:      * methods in your stub classes -- you may need to explicitly remove objects
 336:      * from the cache in order to prevent returning objects that no longer exist.
 337:      *
 338:      * @param      mixed $value A Stock object or a primary key value.
 339:      *
 340:      * @return void
 341:      * @throws PropelException - if the value is invalid.
 342:      */
 343:     public static function removeInstanceFromPool($value)
 344:     {
 345:         if (Propel::isInstancePoolingEnabled() && $value !== null) {
 346:             if (is_object($value) && $value instanceof Stock) {
 347:                 $key = (string) $value->getId();
 348:             } elseif (is_scalar($value)) {
 349:                 // assume we've been passed a primary key
 350:                 $key = (string) $value;
 351:             } else {
 352:                 $e = new PropelException("Invalid value passed to removeInstanceFromPool().  Expected primary key or Stock object; got " . (is_object($value) ? get_class($value) . ' object.' : var_export($value,true)));
 353:                 throw $e;
 354:             }
 355: 
 356:             unset(StockPeer::$instances[$key]);
 357:         }
 358:     } // removeInstanceFromPool()
 359: 
 360:     /**
 361:      * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table.
 362:      *
 363:      * For tables with a single-column primary key, that simple pkey value will be returned.  For tables with
 364:      * a multi-column primary key, a serialize()d version of the primary key will be returned.
 365:      *
 366:      * @param      string $key The key (@see getPrimaryKeyHash()) for this instance.
 367:      * @return   Stock Found object or null if 1) no instance exists for specified key or 2) instance pooling has been disabled.
 368:      * @see        getPrimaryKeyHash()
 369:      */
 370:     public static function getInstanceFromPool($key)
 371:     {
 372:         if (Propel::isInstancePoolingEnabled()) {
 373:             if (isset(StockPeer::$instances[$key])) {
 374:                 return StockPeer::$instances[$key];
 375:             }
 376:         }
 377: 
 378:         return null; // just to be explicit
 379:     }
 380: 
 381:     /**
 382:      * Clear the instance pool.
 383:      *
 384:      * @return void
 385:      */
 386:     public static function clearInstancePool()
 387:     {
 388:         StockPeer::$instances = array();
 389:     }
 390: 
 391:     /**
 392:      * Method to invalidate the instance pool of all tables related to stock
 393:      * by a foreign key with ON DELETE CASCADE
 394:      */
 395:     public static function clearRelatedInstancePool()
 396:     {
 397:     }
 398: 
 399:     /**
 400:      * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table.
 401:      *
 402:      * For tables with a single-column primary key, that simple pkey value will be returned.  For tables with
 403:      * a multi-column primary key, a serialize()d version of the primary key will be returned.
 404:      *
 405:      * @param      array $row PropelPDO resultset row.
 406:      * @param      int $startcol The 0-based offset for reading from the resultset row.
 407:      * @return string A string version of PK or null if the components of primary key in result array are all null.
 408:      */
 409:     public static function getPrimaryKeyHashFromRow($row, $startcol = 0)
 410:     {
 411:         // If the PK cannot be derived from the row, return null.
 412:         if ($row[$startcol] === null) {
 413:             return null;
 414:         }
 415: 
 416:         return (string) $row[$startcol];
 417:     }
 418: 
 419:     /**
 420:      * Retrieves the primary key from the DB resultset row
 421:      * For tables with a single-column primary key, that simple pkey value will be returned.  For tables with
 422:      * a multi-column primary key, an array of the primary key columns will be returned.
 423:      *
 424:      * @param      array $row PropelPDO resultset row.
 425:      * @param      int $startcol The 0-based offset for reading from the resultset row.
 426:      * @return mixed The primary key of the row
 427:      */
 428:     public static function getPrimaryKeyFromRow($row, $startcol = 0)
 429:     {
 430: 
 431:         return (int) $row[$startcol];
 432:     }
 433: 
 434:     /**
 435:      * The returned array will contain objects of the default type or
 436:      * objects that inherit from the default.
 437:      *
 438:      * @throws PropelException Any exceptions caught during processing will be
 439:      *       rethrown wrapped into a PropelException.
 440:      */
 441:     public static function populateObjects(PDOStatement $stmt)
 442:     {
 443:         $results = array();
 444: 
 445:         // set the class once to avoid overhead in the loop
 446:         $cls = StockPeer::getOMClass();
 447:         // populate the object(s)
 448:         while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
 449:             $key = StockPeer::getPrimaryKeyHashFromRow($row, 0);
 450:             if (null !== ($obj = StockPeer::getInstanceFromPool($key))) {
 451:                 // We no longer rehydrate the object, since this can cause data loss.
 452:                 // See http://www.propelorm.org/ticket/509
 453:                 // $obj->hydrate($row, 0, true); // rehydrate
 454:                 $results[] = $obj;
 455:             } else {
 456:                 $obj = new $cls();
 457:                 $obj->hydrate($row);
 458:                 $results[] = $obj;
 459:                 StockPeer::addInstanceToPool($obj, $key);
 460:             } // if key exists
 461:         }
 462:         $stmt->closeCursor();
 463: 
 464:         return $results;
 465:     }
 466:     /**
 467:      * Populates an object of the default type or an object that inherit from the default.
 468:      *
 469:      * @param      array $row PropelPDO resultset row.
 470:      * @param      int $startcol The 0-based offset for reading from the resultset row.
 471:      * @throws PropelException Any exceptions caught during processing will be
 472:      *       rethrown wrapped into a PropelException.
 473:      * @return array (Stock object, last column rank)
 474:      */
 475:     public static function populateObject($row, $startcol = 0)
 476:     {
 477:         $key = StockPeer::getPrimaryKeyHashFromRow($row, $startcol);
 478:         if (null !== ($obj = StockPeer::getInstanceFromPool($key))) {
 479:             // We no longer rehydrate the object, since this can cause data loss.
 480:             // See http://www.propelorm.org/ticket/509
 481:             // $obj->hydrate($row, $startcol, true); // rehydrate
 482:             $col = $startcol + StockPeer::NUM_HYDRATE_COLUMNS;
 483:         } else {
 484:             $cls = StockPeer::OM_CLASS;
 485:             $obj = new $cls();
 486:             $col = $obj->hydrate($row, $startcol);
 487:             StockPeer::addInstanceToPool($obj, $key);
 488:         }
 489: 
 490:         return array($obj, $col);
 491:     }
 492: 
 493: 
 494:     /**
 495:      * Returns the number of rows matching criteria, joining the related Combination table
 496:      *
 497:      * @param      Criteria $criteria
 498:      * @param      boolean $distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead.
 499:      * @param      PropelPDO $con
 500:      * @param      String    $join_behavior the type of joins to use, defaults to Criteria::LEFT_JOIN
 501:      * @return int Number of matching rows.
 502:      */
 503:     public static function doCountJoinCombination(Criteria $criteria, $distinct = false, PropelPDO $con = null, $join_behavior = Criteria::LEFT_JOIN)
 504:     {
 505:         // we're going to modify criteria, so copy it first
 506:         $criteria = clone $criteria;
 507: 
 508:         // We need to set the primary table name, since in the case that there are no WHERE columns
 509:         // it will be impossible for the BasePeer::createSelectSql() method to determine which
 510:         // tables go into the FROM clause.
 511:         $criteria->setPrimaryTableName(StockPeer::TABLE_NAME);
 512: 
 513:         if ($distinct && !in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) {
 514:             $criteria->setDistinct();
 515:         }
 516: 
 517:         if (!$criteria->hasSelectClause()) {
 518:             StockPeer::addSelectColumns($criteria);
 519:         }
 520: 
 521:         $criteria->clearOrderByColumns(); // ORDER BY won't ever affect the count
 522: 
 523:         // Set the correct dbName
 524:         $criteria->setDbName(StockPeer::DATABASE_NAME);
 525: 
 526:         if ($con === null) {
 527:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_READ);
 528:         }
 529: 
 530:         $criteria->addJoin(StockPeer::COMBINATION_ID, CombinationPeer::ID, $join_behavior);
 531: 
 532:         $stmt = BasePeer::doCount($criteria, $con);
 533: 
 534:         if ($row = $stmt->fetch(PDO::FETCH_NUM)) {
 535:             $count = (int) $row[0];
 536:         } else {
 537:             $count = 0; // no rows returned; we infer that means 0 matches.
 538:         }
 539:         $stmt->closeCursor();
 540: 
 541:         return $count;
 542:     }
 543: 
 544: 
 545:     /**
 546:      * Returns the number of rows matching criteria, joining the related Product table
 547:      *
 548:      * @param      Criteria $criteria
 549:      * @param      boolean $distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead.
 550:      * @param      PropelPDO $con
 551:      * @param      String    $join_behavior the type of joins to use, defaults to Criteria::LEFT_JOIN
 552:      * @return int Number of matching rows.
 553:      */
 554:     public static function doCountJoinProduct(Criteria $criteria, $distinct = false, PropelPDO $con = null, $join_behavior = Criteria::LEFT_JOIN)
 555:     {
 556:         // we're going to modify criteria, so copy it first
 557:         $criteria = clone $criteria;
 558: 
 559:         // We need to set the primary table name, since in the case that there are no WHERE columns
 560:         // it will be impossible for the BasePeer::createSelectSql() method to determine which
 561:         // tables go into the FROM clause.
 562:         $criteria->setPrimaryTableName(StockPeer::TABLE_NAME);
 563: 
 564:         if ($distinct && !in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) {
 565:             $criteria->setDistinct();
 566:         }
 567: 
 568:         if (!$criteria->hasSelectClause()) {
 569:             StockPeer::addSelectColumns($criteria);
 570:         }
 571: 
 572:         $criteria->clearOrderByColumns(); // ORDER BY won't ever affect the count
 573: 
 574:         // Set the correct dbName
 575:         $criteria->setDbName(StockPeer::DATABASE_NAME);
 576: 
 577:         if ($con === null) {
 578:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_READ);
 579:         }
 580: 
 581:         $criteria->addJoin(StockPeer::PRODUCT_ID, ProductPeer::ID, $join_behavior);
 582: 
 583:         $stmt = BasePeer::doCount($criteria, $con);
 584: 
 585:         if ($row = $stmt->fetch(PDO::FETCH_NUM)) {
 586:             $count = (int) $row[0];
 587:         } else {
 588:             $count = 0; // no rows returned; we infer that means 0 matches.
 589:         }
 590:         $stmt->closeCursor();
 591: 
 592:         return $count;
 593:     }
 594: 
 595: 
 596:     /**
 597:      * Selects a collection of Stock objects pre-filled with their Combination objects.
 598:      * @param      Criteria  $criteria
 599:      * @param      PropelPDO $con
 600:      * @param      String    $join_behavior the type of joins to use, defaults to Criteria::LEFT_JOIN
 601:      * @return array           Array of Stock objects.
 602:      * @throws PropelException Any exceptions caught during processing will be
 603:      *       rethrown wrapped into a PropelException.
 604:      */
 605:     public static function doSelectJoinCombination(Criteria $criteria, $con = null, $join_behavior = Criteria::LEFT_JOIN)
 606:     {
 607:         $criteria = clone $criteria;
 608: 
 609:         // Set the correct dbName if it has not been overridden
 610:         if ($criteria->getDbName() == Propel::getDefaultDB()) {
 611:             $criteria->setDbName(StockPeer::DATABASE_NAME);
 612:         }
 613: 
 614:         StockPeer::addSelectColumns($criteria);
 615:         $startcol = StockPeer::NUM_HYDRATE_COLUMNS;
 616:         CombinationPeer::addSelectColumns($criteria);
 617: 
 618:         $criteria->addJoin(StockPeer::COMBINATION_ID, CombinationPeer::ID, $join_behavior);
 619: 
 620:         $stmt = BasePeer::doSelect($criteria, $con);
 621:         $results = array();
 622: 
 623:         while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
 624:             $key1 = StockPeer::getPrimaryKeyHashFromRow($row, 0);
 625:             if (null !== ($obj1 = StockPeer::getInstanceFromPool($key1))) {
 626:                 // We no longer rehydrate the object, since this can cause data loss.
 627:                 // See http://www.propelorm.org/ticket/509
 628:                 // $obj1->hydrate($row, 0, true); // rehydrate
 629:             } else {
 630: 
 631:                 $cls = StockPeer::getOMClass();
 632: 
 633:                 $obj1 = new $cls();
 634:                 $obj1->hydrate($row);
 635:                 StockPeer::addInstanceToPool($obj1, $key1);
 636:             } // if $obj1 already loaded
 637: 
 638:             $key2 = CombinationPeer::getPrimaryKeyHashFromRow($row, $startcol);
 639:             if ($key2 !== null) {
 640:                 $obj2 = CombinationPeer::getInstanceFromPool($key2);
 641:                 if (!$obj2) {
 642: 
 643:                     $cls = CombinationPeer::getOMClass();
 644: 
 645:                     $obj2 = new $cls();
 646:                     $obj2->hydrate($row, $startcol);
 647:                     CombinationPeer::addInstanceToPool($obj2, $key2);
 648:                 } // if obj2 already loaded
 649: 
 650:                 // Add the $obj1 (Stock) to $obj2 (Combination)
 651:                 $obj2->addStock($obj1);
 652: 
 653:             } // if joined row was not null
 654: 
 655:             $results[] = $obj1;
 656:         }
 657:         $stmt->closeCursor();
 658: 
 659:         return $results;
 660:     }
 661: 
 662: 
 663:     /**
 664:      * Selects a collection of Stock objects pre-filled with their Product objects.
 665:      * @param      Criteria  $criteria
 666:      * @param      PropelPDO $con
 667:      * @param      String    $join_behavior the type of joins to use, defaults to Criteria::LEFT_JOIN
 668:      * @return array           Array of Stock objects.
 669:      * @throws PropelException Any exceptions caught during processing will be
 670:      *       rethrown wrapped into a PropelException.
 671:      */
 672:     public static function doSelectJoinProduct(Criteria $criteria, $con = null, $join_behavior = Criteria::LEFT_JOIN)
 673:     {
 674:         $criteria = clone $criteria;
 675: 
 676:         // Set the correct dbName if it has not been overridden
 677:         if ($criteria->getDbName() == Propel::getDefaultDB()) {
 678:             $criteria->setDbName(StockPeer::DATABASE_NAME);
 679:         }
 680: 
 681:         StockPeer::addSelectColumns($criteria);
 682:         $startcol = StockPeer::NUM_HYDRATE_COLUMNS;
 683:         ProductPeer::addSelectColumns($criteria);
 684: 
 685:         $criteria->addJoin(StockPeer::PRODUCT_ID, ProductPeer::ID, $join_behavior);
 686: 
 687:         $stmt = BasePeer::doSelect($criteria, $con);
 688:         $results = array();
 689: 
 690:         while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
 691:             $key1 = StockPeer::getPrimaryKeyHashFromRow($row, 0);
 692:             if (null !== ($obj1 = StockPeer::getInstanceFromPool($key1))) {
 693:                 // We no longer rehydrate the object, since this can cause data loss.
 694:                 // See http://www.propelorm.org/ticket/509
 695:                 // $obj1->hydrate($row, 0, true); // rehydrate
 696:             } else {
 697: 
 698:                 $cls = StockPeer::getOMClass();
 699: 
 700:                 $obj1 = new $cls();
 701:                 $obj1->hydrate($row);
 702:                 StockPeer::addInstanceToPool($obj1, $key1);
 703:             } // if $obj1 already loaded
 704: 
 705:             $key2 = ProductPeer::getPrimaryKeyHashFromRow($row, $startcol);
 706:             if ($key2 !== null) {
 707:                 $obj2 = ProductPeer::getInstanceFromPool($key2);
 708:                 if (!$obj2) {
 709: 
 710:                     $cls = ProductPeer::getOMClass();
 711: 
 712:                     $obj2 = new $cls();
 713:                     $obj2->hydrate($row, $startcol);
 714:                     ProductPeer::addInstanceToPool($obj2, $key2);
 715:                 } // if obj2 already loaded
 716: 
 717:                 // Add the $obj1 (Stock) to $obj2 (Product)
 718:                 $obj2->addStock($obj1);
 719: 
 720:             } // if joined row was not null
 721: 
 722:             $results[] = $obj1;
 723:         }
 724:         $stmt->closeCursor();
 725: 
 726:         return $results;
 727:     }
 728: 
 729: 
 730:     /**
 731:      * Returns the number of rows matching criteria, joining all related tables
 732:      *
 733:      * @param      Criteria $criteria
 734:      * @param      boolean $distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead.
 735:      * @param      PropelPDO $con
 736:      * @param      String    $join_behavior the type of joins to use, defaults to Criteria::LEFT_JOIN
 737:      * @return int Number of matching rows.
 738:      */
 739:     public static function doCountJoinAll(Criteria $criteria, $distinct = false, PropelPDO $con = null, $join_behavior = Criteria::LEFT_JOIN)
 740:     {
 741:         // we're going to modify criteria, so copy it first
 742:         $criteria = clone $criteria;
 743: 
 744:         // We need to set the primary table name, since in the case that there are no WHERE columns
 745:         // it will be impossible for the BasePeer::createSelectSql() method to determine which
 746:         // tables go into the FROM clause.
 747:         $criteria->setPrimaryTableName(StockPeer::TABLE_NAME);
 748: 
 749:         if ($distinct && !in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) {
 750:             $criteria->setDistinct();
 751:         }
 752: 
 753:         if (!$criteria->hasSelectClause()) {
 754:             StockPeer::addSelectColumns($criteria);
 755:         }
 756: 
 757:         $criteria->clearOrderByColumns(); // ORDER BY won't ever affect the count
 758: 
 759:         // Set the correct dbName
 760:         $criteria->setDbName(StockPeer::DATABASE_NAME);
 761: 
 762:         if ($con === null) {
 763:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_READ);
 764:         }
 765: 
 766:         $criteria->addJoin(StockPeer::COMBINATION_ID, CombinationPeer::ID, $join_behavior);
 767: 
 768:         $criteria->addJoin(StockPeer::PRODUCT_ID, ProductPeer::ID, $join_behavior);
 769: 
 770:         $stmt = BasePeer::doCount($criteria, $con);
 771: 
 772:         if ($row = $stmt->fetch(PDO::FETCH_NUM)) {
 773:             $count = (int) $row[0];
 774:         } else {
 775:             $count = 0; // no rows returned; we infer that means 0 matches.
 776:         }
 777:         $stmt->closeCursor();
 778: 
 779:         return $count;
 780:     }
 781: 
 782:     /**
 783:      * Selects a collection of Stock objects pre-filled with all related objects.
 784:      *
 785:      * @param      Criteria  $criteria
 786:      * @param      PropelPDO $con
 787:      * @param      String    $join_behavior the type of joins to use, defaults to Criteria::LEFT_JOIN
 788:      * @return array           Array of Stock objects.
 789:      * @throws PropelException Any exceptions caught during processing will be
 790:      *       rethrown wrapped into a PropelException.
 791:      */
 792:     public static function doSelectJoinAll(Criteria $criteria, $con = null, $join_behavior = Criteria::LEFT_JOIN)
 793:     {
 794:         $criteria = clone $criteria;
 795: 
 796:         // Set the correct dbName if it has not been overridden
 797:         if ($criteria->getDbName() == Propel::getDefaultDB()) {
 798:             $criteria->setDbName(StockPeer::DATABASE_NAME);
 799:         }
 800: 
 801:         StockPeer::addSelectColumns($criteria);
 802:         $startcol2 = StockPeer::NUM_HYDRATE_COLUMNS;
 803: 
 804:         CombinationPeer::addSelectColumns($criteria);
 805:         $startcol3 = $startcol2 + CombinationPeer::NUM_HYDRATE_COLUMNS;
 806: 
 807:         ProductPeer::addSelectColumns($criteria);
 808:         $startcol4 = $startcol3 + ProductPeer::NUM_HYDRATE_COLUMNS;
 809: 
 810:         $criteria->addJoin(StockPeer::COMBINATION_ID, CombinationPeer::ID, $join_behavior);
 811: 
 812:         $criteria->addJoin(StockPeer::PRODUCT_ID, ProductPeer::ID, $join_behavior);
 813: 
 814:         $stmt = BasePeer::doSelect($criteria, $con);
 815:         $results = array();
 816: 
 817:         while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
 818:             $key1 = StockPeer::getPrimaryKeyHashFromRow($row, 0);
 819:             if (null !== ($obj1 = StockPeer::getInstanceFromPool($key1))) {
 820:                 // We no longer rehydrate the object, since this can cause data loss.
 821:                 // See http://www.propelorm.org/ticket/509
 822:                 // $obj1->hydrate($row, 0, true); // rehydrate
 823:             } else {
 824:                 $cls = StockPeer::getOMClass();
 825: 
 826:                 $obj1 = new $cls();
 827:                 $obj1->hydrate($row);
 828:                 StockPeer::addInstanceToPool($obj1, $key1);
 829:             } // if obj1 already loaded
 830: 
 831:             // Add objects for joined Combination rows
 832: 
 833:             $key2 = CombinationPeer::getPrimaryKeyHashFromRow($row, $startcol2);
 834:             if ($key2 !== null) {
 835:                 $obj2 = CombinationPeer::getInstanceFromPool($key2);
 836:                 if (!$obj2) {
 837: 
 838:                     $cls = CombinationPeer::getOMClass();
 839: 
 840:                     $obj2 = new $cls();
 841:                     $obj2->hydrate($row, $startcol2);
 842:                     CombinationPeer::addInstanceToPool($obj2, $key2);
 843:                 } // if obj2 loaded
 844: 
 845:                 // Add the $obj1 (Stock) to the collection in $obj2 (Combination)
 846:                 $obj2->addStock($obj1);
 847:             } // if joined row not null
 848: 
 849:             // Add objects for joined Product rows
 850: 
 851:             $key3 = ProductPeer::getPrimaryKeyHashFromRow($row, $startcol3);
 852:             if ($key3 !== null) {
 853:                 $obj3 = ProductPeer::getInstanceFromPool($key3);
 854:                 if (!$obj3) {
 855: 
 856:                     $cls = ProductPeer::getOMClass();
 857: 
 858:                     $obj3 = new $cls();
 859:                     $obj3->hydrate($row, $startcol3);
 860:                     ProductPeer::addInstanceToPool($obj3, $key3);
 861:                 } // if obj3 loaded
 862: 
 863:                 // Add the $obj1 (Stock) to the collection in $obj3 (Product)
 864:                 $obj3->addStock($obj1);
 865:             } // if joined row not null
 866: 
 867:             $results[] = $obj1;
 868:         }
 869:         $stmt->closeCursor();
 870: 
 871:         return $results;
 872:     }
 873: 
 874: 
 875:     /**
 876:      * Returns the number of rows matching criteria, joining the related Combination table
 877:      *
 878:      * @param      Criteria $criteria
 879:      * @param      boolean $distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead.
 880:      * @param      PropelPDO $con
 881:      * @param      String    $join_behavior the type of joins to use, defaults to Criteria::LEFT_JOIN
 882:      * @return int Number of matching rows.
 883:      */
 884:     public static function doCountJoinAllExceptCombination(Criteria $criteria, $distinct = false, PropelPDO $con = null, $join_behavior = Criteria::LEFT_JOIN)
 885:     {
 886:         // we're going to modify criteria, so copy it first
 887:         $criteria = clone $criteria;
 888: 
 889:         // We need to set the primary table name, since in the case that there are no WHERE columns
 890:         // it will be impossible for the BasePeer::createSelectSql() method to determine which
 891:         // tables go into the FROM clause.
 892:         $criteria->setPrimaryTableName(StockPeer::TABLE_NAME);
 893: 
 894:         if ($distinct && !in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) {
 895:             $criteria->setDistinct();
 896:         }
 897: 
 898:         if (!$criteria->hasSelectClause()) {
 899:             StockPeer::addSelectColumns($criteria);
 900:         }
 901: 
 902:         $criteria->clearOrderByColumns(); // ORDER BY should not affect count
 903: 
 904:         // Set the correct dbName
 905:         $criteria->setDbName(StockPeer::DATABASE_NAME);
 906: 
 907:         if ($con === null) {
 908:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_READ);
 909:         }
 910: 
 911:         $criteria->addJoin(StockPeer::PRODUCT_ID, ProductPeer::ID, $join_behavior);
 912: 
 913:         $stmt = BasePeer::doCount($criteria, $con);
 914: 
 915:         if ($row = $stmt->fetch(PDO::FETCH_NUM)) {
 916:             $count = (int) $row[0];
 917:         } else {
 918:             $count = 0; // no rows returned; we infer that means 0 matches.
 919:         }
 920:         $stmt->closeCursor();
 921: 
 922:         return $count;
 923:     }
 924: 
 925: 
 926:     /**
 927:      * Returns the number of rows matching criteria, joining the related Product table
 928:      *
 929:      * @param      Criteria $criteria
 930:      * @param      boolean $distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead.
 931:      * @param      PropelPDO $con
 932:      * @param      String    $join_behavior the type of joins to use, defaults to Criteria::LEFT_JOIN
 933:      * @return int Number of matching rows.
 934:      */
 935:     public static function doCountJoinAllExceptProduct(Criteria $criteria, $distinct = false, PropelPDO $con = null, $join_behavior = Criteria::LEFT_JOIN)
 936:     {
 937:         // we're going to modify criteria, so copy it first
 938:         $criteria = clone $criteria;
 939: 
 940:         // We need to set the primary table name, since in the case that there are no WHERE columns
 941:         // it will be impossible for the BasePeer::createSelectSql() method to determine which
 942:         // tables go into the FROM clause.
 943:         $criteria->setPrimaryTableName(StockPeer::TABLE_NAME);
 944: 
 945:         if ($distinct && !in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) {
 946:             $criteria->setDistinct();
 947:         }
 948: 
 949:         if (!$criteria->hasSelectClause()) {
 950:             StockPeer::addSelectColumns($criteria);
 951:         }
 952: 
 953:         $criteria->clearOrderByColumns(); // ORDER BY should not affect count
 954: 
 955:         // Set the correct dbName
 956:         $criteria->setDbName(StockPeer::DATABASE_NAME);
 957: 
 958:         if ($con === null) {
 959:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_READ);
 960:         }
 961: 
 962:         $criteria->addJoin(StockPeer::COMBINATION_ID, CombinationPeer::ID, $join_behavior);
 963: 
 964:         $stmt = BasePeer::doCount($criteria, $con);
 965: 
 966:         if ($row = $stmt->fetch(PDO::FETCH_NUM)) {
 967:             $count = (int) $row[0];
 968:         } else {
 969:             $count = 0; // no rows returned; we infer that means 0 matches.
 970:         }
 971:         $stmt->closeCursor();
 972: 
 973:         return $count;
 974:     }
 975: 
 976: 
 977:     /**
 978:      * Selects a collection of Stock objects pre-filled with all related objects except Combination.
 979:      *
 980:      * @param      Criteria  $criteria
 981:      * @param      PropelPDO $con
 982:      * @param      String    $join_behavior the type of joins to use, defaults to Criteria::LEFT_JOIN
 983:      * @return array           Array of Stock objects.
 984:      * @throws PropelException Any exceptions caught during processing will be
 985:      *       rethrown wrapped into a PropelException.
 986:      */
 987:     public static function doSelectJoinAllExceptCombination(Criteria $criteria, $con = null, $join_behavior = Criteria::LEFT_JOIN)
 988:     {
 989:         $criteria = clone $criteria;
 990: 
 991:         // Set the correct dbName if it has not been overridden
 992:         // $criteria->getDbName() will return the same object if not set to another value
 993:         // so == check is okay and faster
 994:         if ($criteria->getDbName() == Propel::getDefaultDB()) {
 995:             $criteria->setDbName(StockPeer::DATABASE_NAME);
 996:         }
 997: 
 998:         StockPeer::addSelectColumns($criteria);
 999:         $startcol2 = StockPeer::NUM_HYDRATE_COLUMNS;
1000: 
1001:         ProductPeer::addSelectColumns($criteria);
1002:         $startcol3 = $startcol2 + ProductPeer::NUM_HYDRATE_COLUMNS;
1003: 
1004:         $criteria->addJoin(StockPeer::PRODUCT_ID, ProductPeer::ID, $join_behavior);
1005: 
1006: 
1007:         $stmt = BasePeer::doSelect($criteria, $con);
1008:         $results = array();
1009: 
1010:         while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
1011:             $key1 = StockPeer::getPrimaryKeyHashFromRow($row, 0);
1012:             if (null !== ($obj1 = StockPeer::getInstanceFromPool($key1))) {
1013:                 // We no longer rehydrate the object, since this can cause data loss.
1014:                 // See http://www.propelorm.org/ticket/509
1015:                 // $obj1->hydrate($row, 0, true); // rehydrate
1016:             } else {
1017:                 $cls = StockPeer::getOMClass();
1018: 
1019:                 $obj1 = new $cls();
1020:                 $obj1->hydrate($row);
1021:                 StockPeer::addInstanceToPool($obj1, $key1);
1022:             } // if obj1 already loaded
1023: 
1024:                 // Add objects for joined Product rows
1025: 
1026:                 $key2 = ProductPeer::getPrimaryKeyHashFromRow($row, $startcol2);
1027:                 if ($key2 !== null) {
1028:                     $obj2 = ProductPeer::getInstanceFromPool($key2);
1029:                     if (!$obj2) {
1030: 
1031:                         $cls = ProductPeer::getOMClass();
1032: 
1033:                     $obj2 = new $cls();
1034:                     $obj2->hydrate($row, $startcol2);
1035:                     ProductPeer::addInstanceToPool($obj2, $key2);
1036:                 } // if $obj2 already loaded
1037: 
1038:                 // Add the $obj1 (Stock) to the collection in $obj2 (Product)
1039:                 $obj2->addStock($obj1);
1040: 
1041:             } // if joined row is not null
1042: 
1043:             $results[] = $obj1;
1044:         }
1045:         $stmt->closeCursor();
1046: 
1047:         return $results;
1048:     }
1049: 
1050: 
1051:     /**
1052:      * Selects a collection of Stock objects pre-filled with all related objects except Product.
1053:      *
1054:      * @param      Criteria  $criteria
1055:      * @param      PropelPDO $con
1056:      * @param      String    $join_behavior the type of joins to use, defaults to Criteria::LEFT_JOIN
1057:      * @return array           Array of Stock objects.
1058:      * @throws PropelException Any exceptions caught during processing will be
1059:      *       rethrown wrapped into a PropelException.
1060:      */
1061:     public static function doSelectJoinAllExceptProduct(Criteria $criteria, $con = null, $join_behavior = Criteria::LEFT_JOIN)
1062:     {
1063:         $criteria = clone $criteria;
1064: 
1065:         // Set the correct dbName if it has not been overridden
1066:         // $criteria->getDbName() will return the same object if not set to another value
1067:         // so == check is okay and faster
1068:         if ($criteria->getDbName() == Propel::getDefaultDB()) {
1069:             $criteria->setDbName(StockPeer::DATABASE_NAME);
1070:         }
1071: 
1072:         StockPeer::addSelectColumns($criteria);
1073:         $startcol2 = StockPeer::NUM_HYDRATE_COLUMNS;
1074: 
1075:         CombinationPeer::addSelectColumns($criteria);
1076:         $startcol3 = $startcol2 + CombinationPeer::NUM_HYDRATE_COLUMNS;
1077: 
1078:         $criteria->addJoin(StockPeer::COMBINATION_ID, CombinationPeer::ID, $join_behavior);
1079: 
1080: 
1081:         $stmt = BasePeer::doSelect($criteria, $con);
1082:         $results = array();
1083: 
1084:         while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
1085:             $key1 = StockPeer::getPrimaryKeyHashFromRow($row, 0);
1086:             if (null !== ($obj1 = StockPeer::getInstanceFromPool($key1))) {
1087:                 // We no longer rehydrate the object, since this can cause data loss.
1088:                 // See http://www.propelorm.org/ticket/509
1089:                 // $obj1->hydrate($row, 0, true); // rehydrate
1090:             } else {
1091:                 $cls = StockPeer::getOMClass();
1092: 
1093:                 $obj1 = new $cls();
1094:                 $obj1->hydrate($row);
1095:                 StockPeer::addInstanceToPool($obj1, $key1);
1096:             } // if obj1 already loaded
1097: 
1098:                 // Add objects for joined Combination rows
1099: 
1100:                 $key2 = CombinationPeer::getPrimaryKeyHashFromRow($row, $startcol2);
1101:                 if ($key2 !== null) {
1102:                     $obj2 = CombinationPeer::getInstanceFromPool($key2);
1103:                     if (!$obj2) {
1104: 
1105:                         $cls = CombinationPeer::getOMClass();
1106: 
1107:                     $obj2 = new $cls();
1108:                     $obj2->hydrate($row, $startcol2);
1109:                     CombinationPeer::addInstanceToPool($obj2, $key2);
1110:                 } // if $obj2 already loaded
1111: 
1112:                 // Add the $obj1 (Stock) to the collection in $obj2 (Combination)
1113:                 $obj2->addStock($obj1);
1114: 
1115:             } // if joined row is not null
1116: 
1117:             $results[] = $obj1;
1118:         }
1119:         $stmt->closeCursor();
1120: 
1121:         return $results;
1122:     }
1123: 
1124:     /**
1125:      * Returns the TableMap related to this peer.
1126:      * This method is not needed for general use but a specific application could have a need.
1127:      * @return TableMap
1128:      * @throws PropelException Any exceptions caught during processing will be
1129:      *       rethrown wrapped into a PropelException.
1130:      */
1131:     public static function getTableMap()
1132:     {
1133:         return Propel::getDatabaseMap(StockPeer::DATABASE_NAME)->getTable(StockPeer::TABLE_NAME);
1134:     }
1135: 
1136:     /**
1137:      * Add a TableMap instance to the database for this peer class.
1138:      */
1139:     public static function buildTableMap()
1140:     {
1141:       $dbMap = Propel::getDatabaseMap(BaseStockPeer::DATABASE_NAME);
1142:       if (!$dbMap->hasTable(BaseStockPeer::TABLE_NAME)) {
1143:         $dbMap->addTableObject(new StockTableMap());
1144:       }
1145:     }
1146: 
1147:     /**
1148:      * The class that the Peer will make instances of.
1149:      *
1150:      *
1151:      * @return string ClassName
1152:      */
1153:     public static function getOMClass()
1154:     {
1155:         return StockPeer::OM_CLASS;
1156:     }
1157: 
1158:     /**
1159:      * Performs an INSERT on the database, given a Stock or Criteria object.
1160:      *
1161:      * @param      mixed $values Criteria or Stock object containing data that is used to create the INSERT statement.
1162:      * @param      PropelPDO $con the PropelPDO connection to use
1163:      * @return mixed           The new primary key.
1164:      * @throws PropelException Any exceptions caught during processing will be
1165:      *       rethrown wrapped into a PropelException.
1166:      */
1167:     public static function doInsert($values, PropelPDO $con = null)
1168:     {
1169:         if ($con === null) {
1170:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
1171:         }
1172: 
1173:         if ($values instanceof Criteria) {
1174:             $criteria = clone $values; // rename for clarity
1175:         } else {
1176:             $criteria = $values->buildCriteria(); // build Criteria from Stock object
1177:         }
1178: 
1179:         if ($criteria->containsKey(StockPeer::ID) && $criteria->keyContainsValue(StockPeer::ID) ) {
1180:             throw new PropelException('Cannot insert a value for auto-increment primary key ('.StockPeer::ID.')');
1181:         }
1182: 
1183: 
1184:         // Set the correct dbName
1185:         $criteria->setDbName(StockPeer::DATABASE_NAME);
1186: 
1187:         try {
1188:             // use transaction because $criteria could contain info
1189:             // for more than one table (I guess, conceivably)
1190:             $con->beginTransaction();
1191:             $pk = BasePeer::doInsert($criteria, $con);
1192:             $con->commit();
1193:         } catch (PropelException $e) {
1194:             $con->rollBack();
1195:             throw $e;
1196:         }
1197: 
1198:         return $pk;
1199:     }
1200: 
1201:     /**
1202:      * Performs an UPDATE on the database, given a Stock or Criteria object.
1203:      *
1204:      * @param      mixed $values Criteria or Stock object containing data that is used to create the UPDATE statement.
1205:      * @param      PropelPDO $con The connection to use (specify PropelPDO connection object to exert more control over transactions).
1206:      * @return int             The number of affected rows (if supported by underlying database driver).
1207:      * @throws PropelException Any exceptions caught during processing will be
1208:      *       rethrown wrapped into a PropelException.
1209:      */
1210:     public static function doUpdate($values, PropelPDO $con = null)
1211:     {
1212:         if ($con === null) {
1213:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
1214:         }
1215: 
1216:         $selectCriteria = new Criteria(StockPeer::DATABASE_NAME);
1217: 
1218:         if ($values instanceof Criteria) {
1219:             $criteria = clone $values; // rename for clarity
1220: 
1221:             $comparison = $criteria->getComparison(StockPeer::ID);
1222:             $value = $criteria->remove(StockPeer::ID);
1223:             if ($value) {
1224:                 $selectCriteria->add(StockPeer::ID, $value, $comparison);
1225:             } else {
1226:                 $selectCriteria->setPrimaryTableName(StockPeer::TABLE_NAME);
1227:             }
1228: 
1229:         } else { // $values is Stock object
1230:             $criteria = $values->buildCriteria(); // gets full criteria
1231:             $selectCriteria = $values->buildPkeyCriteria(); // gets criteria w/ primary key(s)
1232:         }
1233: 
1234:         // set the correct dbName
1235:         $criteria->setDbName(StockPeer::DATABASE_NAME);
1236: 
1237:         return BasePeer::doUpdate($selectCriteria, $criteria, $con);
1238:     }
1239: 
1240:     /**
1241:      * Deletes all rows from the stock table.
1242:      *
1243:      * @param      PropelPDO $con the connection to use
1244:      * @return int             The number of affected rows (if supported by underlying database driver).
1245:      * @throws PropelException
1246:      */
1247:     public static function doDeleteAll(PropelPDO $con = null)
1248:     {
1249:         if ($con === null) {
1250:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
1251:         }
1252:         $affectedRows = 0; // initialize var to track total num of affected rows
1253:         try {
1254:             // use transaction because $criteria could contain info
1255:             // for more than one table or we could emulating ON DELETE CASCADE, etc.
1256:             $con->beginTransaction();
1257:             $affectedRows += BasePeer::doDeleteAll(StockPeer::TABLE_NAME, $con, StockPeer::DATABASE_NAME);
1258:             // Because this db requires some delete cascade/set null emulation, we have to
1259:             // clear the cached instance *after* the emulation has happened (since
1260:             // instances get re-added by the select statement contained therein).
1261:             StockPeer::clearInstancePool();
1262:             StockPeer::clearRelatedInstancePool();
1263:             $con->commit();
1264: 
1265:             return $affectedRows;
1266:         } catch (PropelException $e) {
1267:             $con->rollBack();
1268:             throw $e;
1269:         }
1270:     }
1271: 
1272:     /**
1273:      * Performs a DELETE on the database, given a Stock or Criteria object OR a primary key value.
1274:      *
1275:      * @param      mixed $values Criteria or Stock object or primary key or array of primary keys
1276:      *              which is used to create the DELETE statement
1277:      * @param      PropelPDO $con the connection to use
1278:      * @return int The number of affected rows (if supported by underlying database driver).  This includes CASCADE-related rows
1279:      *              if supported by native driver or if emulated using Propel.
1280:      * @throws PropelException Any exceptions caught during processing will be
1281:      *       rethrown wrapped into a PropelException.
1282:      */
1283:      public static function doDelete($values, PropelPDO $con = null)
1284:      {
1285:         if ($con === null) {
1286:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
1287:         }
1288: 
1289:         if ($values instanceof Criteria) {
1290:             // invalidate the cache for all objects of this type, since we have no
1291:             // way of knowing (without running a query) what objects should be invalidated
1292:             // from the cache based on this Criteria.
1293:             StockPeer::clearInstancePool();
1294:             // rename for clarity
1295:             $criteria = clone $values;
1296:         } elseif ($values instanceof Stock) { // it's a model object
1297:             // invalidate the cache for this single object
1298:             StockPeer::removeInstanceFromPool($values);
1299:             // create criteria based on pk values
1300:             $criteria = $values->buildPkeyCriteria();
1301:         } else { // it's a primary key, or an array of pks
1302:             $criteria = new Criteria(StockPeer::DATABASE_NAME);
1303:             $criteria->add(StockPeer::ID, (array) $values, Criteria::IN);
1304:             // invalidate the cache for this object(s)
1305:             foreach ((array) $values as $singleval) {
1306:                 StockPeer::removeInstanceFromPool($singleval);
1307:             }
1308:         }
1309: 
1310:         // Set the correct dbName
1311:         $criteria->setDbName(StockPeer::DATABASE_NAME);
1312: 
1313:         $affectedRows = 0; // initialize var to track total num of affected rows
1314: 
1315:         try {
1316:             // use transaction because $criteria could contain info
1317:             // for more than one table or we could emulating ON DELETE CASCADE, etc.
1318:             $con->beginTransaction();
1319: 
1320:             $affectedRows += BasePeer::doDelete($criteria, $con);
1321:             StockPeer::clearRelatedInstancePool();
1322:             $con->commit();
1323: 
1324:             return $affectedRows;
1325:         } catch (PropelException $e) {
1326:             $con->rollBack();
1327:             throw $e;
1328:         }
1329:     }
1330: 
1331:     /**
1332:      * Validates all modified columns of given Stock object.
1333:      * If parameter $columns is either a single column name or an array of column names
1334:      * than only those columns are validated.
1335:      *
1336:      * NOTICE: This does not apply to primary or foreign keys for now.
1337:      *
1338:      * @param      Stock $obj The object to validate.
1339:      * @param      mixed $cols Column name or array of column names.
1340:      *
1341:      * @return mixed TRUE if all columns are valid or the error message of the first invalid column.
1342:      */
1343:     public static function doValidate($obj, $cols = null)
1344:     {
1345:         $columns = array();
1346: 
1347:         if ($cols) {
1348:             $dbMap = Propel::getDatabaseMap(StockPeer::DATABASE_NAME);
1349:             $tableMap = $dbMap->getTable(StockPeer::TABLE_NAME);
1350: 
1351:             if (! is_array($cols)) {
1352:                 $cols = array($cols);
1353:             }
1354: 
1355:             foreach ($cols as $colName) {
1356:                 if ($tableMap->hasColumn($colName)) {
1357:                     $get = 'get' . $tableMap->getColumn($colName)->getPhpName();
1358:                     $columns[$colName] = $obj->$get();
1359:                 }
1360:             }
1361:         } else {
1362: 
1363:         }
1364: 
1365:         return BasePeer::doValidate(StockPeer::DATABASE_NAME, StockPeer::TABLE_NAME, $columns);
1366:     }
1367: 
1368:     /**
1369:      * Retrieve a single object by pkey.
1370:      *
1371:      * @param      int $pk the primary key.
1372:      * @param      PropelPDO $con the connection to use
1373:      * @return Stock
1374:      */
1375:     public static function retrieveByPK($pk, PropelPDO $con = null)
1376:     {
1377: 
1378:         if (null !== ($obj = StockPeer::getInstanceFromPool((string) $pk))) {
1379:             return $obj;
1380:         }
1381: 
1382:         if ($con === null) {
1383:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_READ);
1384:         }
1385: 
1386:         $criteria = new Criteria(StockPeer::DATABASE_NAME);
1387:         $criteria->add(StockPeer::ID, $pk);
1388: 
1389:         $v = StockPeer::doSelect($criteria, $con);
1390: 
1391:         return !empty($v) > 0 ? $v[0] : null;
1392:     }
1393: 
1394:     /**
1395:      * Retrieve multiple objects by pkey.
1396:      *
1397:      * @param      array $pks List of primary keys
1398:      * @param      PropelPDO $con the connection to use
1399:      * @return Stock[]
1400:      * @throws PropelException Any exceptions caught during processing will be
1401:      *       rethrown wrapped into a PropelException.
1402:      */
1403:     public static function retrieveByPKs($pks, PropelPDO $con = null)
1404:     {
1405:         if ($con === null) {
1406:             $con = Propel::getConnection(StockPeer::DATABASE_NAME, Propel::CONNECTION_READ);
1407:         }
1408: 
1409:         $objs = null;
1410:         if (empty($pks)) {
1411:             $objs = array();
1412:         } else {
1413:             $criteria = new Criteria(StockPeer::DATABASE_NAME);
1414:             $criteria->add(StockPeer::ID, $pks, Criteria::IN);
1415:             $objs = StockPeer::doSelect($criteria, $con);
1416:         }
1417: 
1418:         return $objs;
1419:     }
1420: 
1421: } // BaseStockPeer
1422: 
1423: // This is the static code needed to register the TableMap for this table with the main Propel class.
1424: //
1425: BaseStockPeer::buildTableMap();
1426: 
1427: 
thelia API documentation generated by ApiGen 2.8.0