Airship\Engine\Database::insert PHP Méthode

insert() public méthode

Insert a new row to a table in a database.
public insert ( string $table, array $map = [] ) : mixed
$table string - table name
$map array - associative array of which values should be assigned to each field
Résultat mixed
    public function insert(string $table, array $map = [])
    {
        if (empty($map)) {
            return null;
        }
        // Begin query string
        $queryString = 'INSERT INTO ' . $this->escapeIdentifier($table) . ' (';
        $placeholder = [];
        $_keys = [];
        $params = [];
        foreach ($map as $k => $v) {
            if ($v !== null) {
                $_keys[] = $k;
                if ($v === true || $v === false) {
                    switch ($this->dbengine) {
                        case 'pgsql':
                        case 'mysql':
                            $placeholder[] = $v ? 'TRUE' : 'FALSE';
                            break;
                    }
                } elseif (\is_array($v)) {
                    throw new \TypeError(\trk('errors.database.array_passed'));
                } else {
                    $placeholder[] = '?';
                    $params[] = $v;
                }
            }
        }
        // Let's make sure our keys are escaped.
        $keys = [];
        foreach ($_keys as $i => $v) {
            $keys[] = $this->escapeIdentifier($v);
        }
        // Now let's append a list of our columns.
        $queryString .= \implode(', ', $keys);
        // This is the middle piece.
        $queryString .= ') VALUES (';
        // Now let's concatenate the ? placeholders
        $queryString .= \implode(', ', $placeholder);
        // Necessary to close the open ( above
        $queryString .= ');';
        // Now let's run a query with the parameters
        return $this->safeQuery($queryString, $params);
    }

Usage Example

Exemple #1
0
 /**
  * We're storing metadata about a package in the database.
  *
  * @param TreeUpdate $update
  * @param int $treeUpdateID
  */
 protected function updatePackageQueue(TreeUpdate $update, int $treeUpdateID)
 {
     $packageId = $this->db->cell('SELECT
               packageid 
          FROM
               airship_package_cache
          WHERE 
              packagetype = ?
              AND supplier = ?
              AND name = ? 
         ', $update->getPackageType(), $update->getSupplierName(), $update->getPackageName());
     if (empty($packageId)) {
         $packageId = $this->db->insertGet('airship_package_cache', ['packagetype' => $update->getPackageType(), 'supplier' => $update->getSupplierName(), 'name' => $update->getPackageName()], 'packageid');
     }
     $data = $update->getNodeData();
     $this->db->insert('airship_package_versions', ['package' => $packageId, 'version' => $data['version'], 'checksum' => $data['checksum'], 'commithash' => $data['commit'] ?? null, 'date_released' => $data['date_released'], 'treeupdateid' => $treeUpdateID]);
 }