本文整理汇总了PHP中Doctrine_Table::getColumnName方法的典型用法代码示例。如果您正苦于以下问题:PHP Doctrine_Table::getColumnName方法的具体用法?PHP Doctrine_Table::getColumnName怎么用?PHP Doctrine_Table::getColumnName使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Doctrine_Table
的用法示例。
在下文中一共展示了Doctrine_Table::getColumnName方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getColumns
/**
* Return all columns as an array
*
* Array must contain 'type' for column type, 'notnull' true/false
* for the column's nullability, and 'values' for enum values, 'primary'
* true/false for primary key. Key = column's name
*
* @return array
*/
public function getColumns()
{
$foreignKeyColumns = array();
foreach ($this->_table->getRelations() as $alias => $relation) {
$localColumn = strtolower($relation['local']);
$foreignKeyColumns[$localColumn] = $relation['class'];
}
$data = $this->_table->getColumns();
$cols = array();
foreach ($data as $name => $def) {
$isPrimary = isset($def['primary']) ? $def['primary'] : false;
$isForeignKey = isset($foreignKeyColumns[strtolower($name)]);
$columnName = $this->_table->getColumnName($name);
$fieldName = $this->_table->getFieldName($columnName);
$cols[$fieldName] = array('type' => $def['type'], 'notnull' => isset($def['notnull']) ? $def['notnull'] : false, 'values' => isset($def['values']) ? $def['values'] : array(), 'primary' => $isPrimary, 'foreignKey' => $isForeignKey, 'class' => $isForeignKey ? $foreignKeyColumns[strtolower($name)] : null);
}
return $cols;
}
示例2: insert
/**
* Inserts a table row with specified data.
*
* @param Doctrine_Table $table The table to insert data into.
* @param array $values An associative array containing column-value pairs.
* Values can be strings or Doctrine_Expression instances.
* @return integer the number of affected rows. Boolean false if empty value array was given,
*/
public function insert(Doctrine_Table $table, array $fields)
{
$tableName = $table->getTableName();
// column names are specified as array keys
$cols = array();
// the query VALUES will contain either expresions (eg 'NOW()') or ?
$a = array();
foreach ($fields as $fieldName => $value) {
$cols[] = $this->quoteIdentifier($table->getColumnName($fieldName));
if ($value instanceof Doctrine_Expression) {
$a[] = $value->getSql();
unset($fields[$fieldName]);
} else {
$a[] = '?';
}
}
// build the statement
$query = 'INSERT INTO ' . $this->quoteIdentifier($tableName) . ' (' . implode(', ', $cols) . ')' . ' VALUES (' . implode(', ', $a) . ')';
return $this->exec($query, array_values($fields));
}
示例3: insert
/**
* Inserts a table row with specified data.
*
* @param Doctrine_Table $table The table to insert data into.
* @param array $values An associative array containing column-value pairs.
* Values can be strings or Doctrine_Expression instances.
* @return integer the number of affected rows. Boolean false if empty value array was given,
*/
public function insert(Doctrine_Table $table, array $fields)
{
$tableName = $table->getTableName();
// column names are specified as array keys
$cols = array();
// the query VALUES will contain either expresions (eg 'NOW()') or ?
$a = array();
foreach ($fields as $fieldName => $value) {
if ($table->isIdentifier($fieldName) && $table->isIdentifierAutoincrement() && $value == null) {
// Autoincrement fields should not be added to the insert statement
// if their value is null
unset($fields[$fieldName]);
continue;
}
$cols[] = $this->quoteIdentifier($table->getColumnName($fieldName));
if ($value instanceof Doctrine_Expression) {
$a[] = $value->getSql();
unset($fields[$fieldName]);
} else {
$a[] = '?';
}
}
if (count($fields) == 0) {
// Real fix #1786 and #2327 (default values when table is just 'id' as PK)
return $this->exec('INSERT INTO ' . $this->quoteIdentifier($tableName) . ' ' . ' VALUES (DEFAULT)');
}
// build the statement
$query = 'INSERT INTO ' . $this->quoteIdentifier($tableName) . ' (' . implode(', ', $cols) . ')' . ' VALUES (' . implode(', ', $a) . ')';
return $this->exec($query, array_values($fields));
}
示例4: getIdentifiers
/**
* getIdentifiers
* gives a list of identifiers from given table
*
* the identifiers are in format:
* [componentName].[identifier]
*
* @param Doctrine_Table $table table object to retrieve identifiers from
*/
public function getIdentifiers(Doctrine_Table $table)
{
$componentNameToLower = strtolower($table->getComponentName());
if (is_array($table->getIdentifier())) {
$columns = array();
foreach ((array) $table->getIdentifierColumnNames() as $identColName) {
$columns[] = $componentNameToLower . '_' . $identColName;
}
} else {
$columns = $componentNameToLower . '_' . $table->getColumnName($table->getIdentifier());
}
return $columns;
}
示例5: replace
/**
* Execute a SQL REPLACE query. A REPLACE query is identical to a INSERT
* query, except that if there is already a row in the table with the same
* key field values, the REPLACE query just updates its values instead of
* inserting a new row.
*
* The REPLACE type of query does not make part of the SQL standards. Since
* practically only MySQL implements it natively, this type of query is
* emulated through this method for other DBMS using standard types of
* queries inside a transaction to assure the atomicity of the operation.
*
* @access public
*
* @param string $table name of the table on which the REPLACE query will
* be executed.
* @param array $fields associative array that describes the fields and the
* values that will be inserted or updated in the specified table. The
* indexes of the array are the names of all the fields of the table. The
* values of the array are also associative arrays that describe the
* values and other properties of the table fields.
*
* Here follows a list of field properties that need to be specified:
*
* value:
* Value to be assigned to the specified field. This value may be
* of specified in database independent type format as this
* function can perform the necessary datatype conversions.
*
* Default:
* this property is required unless the Null property
* is set to 1.
*
* type
* Name of the type of the field. Currently, all types Metabase
* are supported except for clob and blob.
*
* Default: no type conversion
*
* null
* Boolean property that indicates that the value for this field
* should be set to null.
*
* The default value for fields missing in INSERT queries may be
* specified the definition of a table. Often, the default value
* is already null, but since the REPLACE may be emulated using
* an UPDATE query, make sure that all fields of the table are
* listed in this function argument array.
*
* Default: 0
*
* key
* Boolean property that indicates that this field should be
* handled as a primary key or at least as part of the compound
* unique index of the table that will determine the row that will
* updated if it exists or inserted a new row otherwise.
*
* This function will fail if no key field is specified or if the
* value of a key field is set to null because fields that are
* part of unique index they may not be null.
*
* Default: 0
*
* @return integer the number of affected rows
*/
public function replace(Doctrine_Table $table, array $fields, array $keys)
{
if (empty($keys)) {
throw new Doctrine_Connection_Exception('Not specified which fields are keys');
}
$columns = array();
$values = array();
$params = array();
foreach ($fields as $fieldName => $value) {
$columns[] = $table->getColumnName($fieldName);
$values[] = '?';
$params[] = $value;
}
$query = 'REPLACE INTO ' . $this->quoteIdentifier($table->getTableName()) . ' (' . implode(',', $columns) . ') VALUES (' . implode(',', $values) . ')';
return $this->exec($query, $params);
}
示例6: buildForeignKeys
/**
* Generates foreign keys for the plugin table based on the owner table.
* These columns are automatically added to the generated model so we can
* create foreign keys back to the table object that owns the plugin.
*
* @param Doctrine_Table $table the table object that owns the plugin
* @return array an array of foreign key definitions
*/
public function buildForeignKeys(Doctrine_Table $table)
{
$fk = array();
foreach ((array) $table->getIdentifier() as $field) {
$def = $table->getDefinitionOf($field);
unset($def['autoincrement']);
unset($def['sequence']);
unset($def['primary']);
$col = $table->hasColumn($field) ? $field : $table->getColumnName($field) . ' as ' . $field;
$def['primary'] = true;
$fk[$col] = $def;
}
return $fk;
}
示例7: getName
/**
* Get the name of the column
*
* @return string $name
*/
public function getName()
{
return $this->table->getColumnName($this->name);
}
示例8: replace
/**
* Execute a SQL REPLACE query. A REPLACE query is identical to a INSERT
* query, except that if there is already a row in the table with the same
* key field values, the REPLACE query just updates its values instead of
* inserting a new row.
*
* The REPLACE type of query does not make part of the SQL standards. Since
* practically only MySQL implements it natively, this type of query is
* emulated through this method for other DBMS using standard types of
* queries inside a transaction to assure the atomicity of the operation.
*
* @access public
*
* @param string $table name of the table on which the REPLACE query will
* be executed.
* @param array $fields associative array that describes the fields and the
* values that will be inserted or updated in the specified table. The
* indexes of the array are the names of all the fields of the table. The
* values of the array are also associative arrays that describe the
* values and other properties of the table fields.
*
* Here follows a list of field properties that need to be specified:
*
* value:
* Value to be assigned to the specified field. This value may be
* of specified in database independent type format as this
* function can perform the necessary datatype conversions.
*
* Default:
* this property is required unless the Null property
* is set to 1.
*
* type
* Name of the type of the field. Currently, all types Metabase
* are supported except for clob and blob.
*
* Default: no type conversion
*
* null
* Boolean property that indicates that the value for this field
* should be set to null.
*
* The default value for fields missing in INSERT queries may be
* specified the definition of a table. Often, the default value
* is already null, but since the REPLACE may be emulated using
* an UPDATE query, make sure that all fields of the table are
* listed in this function argument array.
*
* Default: 0
*
* key
* Boolean property that indicates that this field should be
* handled as a primary key or at least as part of the compound
* unique index of the table that will determine the row that will
* updated if it exists or inserted a new row otherwise.
*
* This function will fail if no key field is specified or if the
* value of a key field is set to null because fields that are
* part of unique index they may not be null.
*
* Default: 0
*
* @return integer the number of affected rows
*/
public function replace(Doctrine_Table $table, array $fields, array $keys)
{
$count = count($fields);
$query = $values = '';
$keys = $colnum = 0;
for (reset($fields); $colnum < $count; next($fields), $colnum++) {
$name = key($fields);
if ($colnum > 0) {
$query .= ',';
$values .= ',';
}
$query .= $table->getColumnName($name);
if (isset($fields[$name]['null']) && $fields[$name]['null']) {
$value = 'NULL';
} else {
$type = isset($fields[$name]['type']) ? $fields[$name]['type'] : null;
$value = $this->quote($fields[$name]['value'], $type);
}
$values .= $value;
if (isset($fields[$name]['key']) && $fields[$name]['key']) {
if ($value === 'NULL') {
throw new Doctrine_Connection_Mysql_Exception('key value ' . $name . ' may not be NULL');
}
$keys++;
}
}
if ($keys == 0) {
throw new Doctrine_Connection_Mysql_Exception('not specified which fields are keys');
}
$query = 'REPLACE INTO ' . $table->getTableName() . ' (' . $query . ') VALUES (' . $values . ')';
return $this->exec($query);
}