public function postUp($manager) { // add the post-migration code here require_once $_SERVER['PWD'] . '/base/lib/inc.php'; $oConnection = Propel::getConnection(DocumentPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); Propel::disableInstancePooling(); $stmt = DocumentPeer::doSelectStmt(DocumentQuery::create()->clearSelectColumns()->addSelectColumn('documents.id')->addSelectColumn('documents.hash')); foreach ($stmt->fetchAll(PDO::FETCH_NUM) as $row) { $iId = $row[0]; $sHash = $row[1]; $oConnection->exec('INSERT IGNORE INTO `document_data` (`hash`, `data`, `created_at`, `updated_at`, `created_by`, `updated_by`) VALUES ("' . $sHash . '", (SELECT `data` FROM `documents` WHERE `id` = ' . $iId . '), (SELECT `created_at` FROM `documents` WHERE `id` = ' . $iId . '), (SELECT `updated_at` FROM `documents` WHERE `id` = ' . $iId . '), (SELECT `created_by` FROM `documents` WHERE `id` = ' . $iId . '), (SELECT `updated_by` FROM `documents` WHERE `id` = ' . $iId . '))'); } $stmt->closeCursor(); }
/** * Reloads this object from datastore based on primary key and (optionally) resets all associated objects. * * This will only work if the object has been saved and has a valid primary key set. * * @param boolean $deep (optional) Whether to also de-associated any related objects. * @param PropelPDO $con (optional) The PropelPDO connection to use. * @return void * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db */ public function reload($deep = false, PropelPDO $con = null) { if ($this->isDeleted()) { throw new PropelException("Cannot reload a deleted object."); } if ($this->isNew()) { throw new PropelException("Cannot reload an unsaved object."); } if ($con === null) { $con = Propel::getConnection(DocumentPeer::DATABASE_NAME, Propel::CONNECTION_READ); } // We don't need to alter the object instance pool; we're just modifying this instance // already in the pool. $stmt = DocumentPeer::doSelectStmt($this->buildPkeyCriteria(), $con); $row = $stmt->fetch(PDO::FETCH_NUM); $stmt->closeCursor(); if (!$row) { throw new PropelException('Cannot find matching row in the database to reload object values.'); } $this->hydrate($row, 0, true); // rehydrate if ($deep) { // also de-associate any related objects? } // if (deep) }
public static function doDelete($values, PropelPDO $con = null) { if ($con === null) { $con = Propel::getConnection(PagePeer::DATABASE_NAME, Propel::CONNECTION_WRITE); } if ($values instanceof Criteria) { // rename for clarity $criteria = clone $values; } elseif ($values instanceof Document) { // it's a model object // create criteria based on pk values $criteria = $values->buildPkeyCriteria(); } else { // it's a primary key, or an array of pks $criteria = new Criteria(self::DATABASE_NAME); $criteria->add(PagePeer::ID, (array) $values, Criteria::IN); } $oHashCriteria = clone $criteria; $aHashes = array(); $stmt = DocumentPeer::doSelectStmt($oHashCriteria->clearSelectColumns()->addSelectColumn(DocumentPeer::HASH)); while (($row = $stmt->fetch(PDO::FETCH_NUM)) !== false) { $sHash = $row[0]; if (!isset($aHashes[$sHash])) { $aHashes[$sHash] = 0; } $aHashes[$sHash]++; } foreach ($aHashes as $sHash => $iCount) { // Should delete the data object if all documents with this hash are to be deleted if (DocumentQuery::create()->filterByHash($sHash)->count() === $iCount) { $oDocumentData = DocumentDataQuery::create()->findPk($sHash); if ($oDocumentData) { $oDocumentData->delete(); } } } $stmt->closeCursor(); return parent::doDelete($criteria, $con); }
/** * Selects several row from the DB. * * @param Criteria $criteria The Criteria object used to build the SELECT statement. * @param PropelPDO $con * @return array Array of selected Objects * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function doSelect(Criteria $criteria, PropelPDO $con = null) { return DocumentPeer::populateObjects(DocumentPeer::doSelectStmt($criteria, $con)); }