Location: PHPKode > scripts > DATA > data/DATA/MySQL5/PrimaryKeyIndexingStrategy.php
<?php
/**
 * @package DATA_MySQL5
 */

/**
 * Strategy for mapping array offsets to primary key values.
 */
class DATA_MySQL5_PrimaryKeyIndexingStrategy implements DATA_AssociativeIndexingStrategy {
    /**
     * Stores table name on construction for future operations.
     * @var string
     */
    protected $table;
    
    /**
     * Constructor.
     * 
     * @param string $table The table name.
     */
    public function __construct($table) {
        $this->table = $table;
    }
    
    public function isSingleRowIndexing() {
        return true;
    }
    
    protected function getIndexField() {
        $keys = DATA_MySQL5_Schema::getPrimaryKey($this->table);
        return $keys[0];
    }
    
    public function inboxRowOffset($row) {
        $indexField = $this->getIndexField();
        try {
            return DATA_MySQL5_Schema::getSQLTypeFactory($this->table, $indexField)->inbox($row);
        } catch (DATA_SQLTypeConstraintFailed $exception) {
            $exception->setTable($this->table);
            $exception->setField($indexField);
            throw $exception;
        }
    }
    
    public function buildWhereConditions($row) {
        $indexField = $this->getIndexField();
        return "`{$indexField}` = " . DATA_MySQL5_Access::prepareData($row);
    }
    
    public function getAdditionalInsertFields($row) {
        return array(
            $this->getIndexField() => $row
        );
    }
}
?>
Return current item: DATA