lib/private/DB/Adapter.php
/**
	 * Insert a row if the matching row does not exists.
	 *
	 * @param string $table The table name (will replace *PREFIX* with the actual prefix)
	 * @param array $input data that should be inserted into the table  (column name => value)
	 * @param array|null $compare List of values that should be checked for "if not exists"
	 *				If this is null or an empty array, all keys of $input will be compared
	 *				Please note: text fields (clob) must not be used in the compare array
	 * @return int number of inserted rows
	 * @throws \Doctrine\DBAL\DBALException
	 */
Insert a row if the matching row does not exists.
Insert a row if the matching row does not exists .
public function insertIfNotExist($table, $input, array $compare = null) {
		if (empty($compare)) {
			$compare = array_keys($input);
		}
		$query = 'INSERT INTO `' .$table . '` (`'
			. implode('`,`', array_keys($input)) . '`) SELECT '
			. str_repeat('?,', count($input)-1).'? ' 			. 'FROM `' . $table . '` WHERE ';
		$inserts = array_values($input);
		foreach($compare as $key) {
			$query .= '`' . $key . '`';
			if (is_null($input[$key])) {
				$query .= ' IS NULL AND ';
			} else {
				$inserts[] = $input[$key];
				$query .= ' = ? AND ';
			}
		}
		$query = substr($query, 0, strlen($query) - 5);
		$query .= ' HAVING COUNT(*) = 0';
		return $this->conn->executeUpdate($query, $inserts);
	}
public function insertIfNotExist ( $ table , $ input , array $ compare = null ) { if ( empty ( $ compare ) ) { $ compare = array_keys ( $ input ) ; } $ query = 'INSERT INTO `' . $ table . '` (`' . implode ( '`,`' , array_keys ( $ input ) ) . '`) SELECT ' . str_repeat ( '?,' , count ( $ input ) - 1 ) . '? ' . 'FROM `' . $ table . '` WHERE ' ; $ inserts = array_values ( $ input ) ; foreach ( $ compare as $ key ) { $ query .= '`' . $ key . '`' ; if ( is_null ( $ input [ $ key ] ) ) { $ query .= ' IS NULL AND ' ; } else { $ inserts [ ] = $ input [ $ key ] ; $ query .= ' = ? AND ' ; } } $ query = substr ( $ query , 0 , strlen ( $ query ) - 5 ) ; $ query .= ' HAVING COUNT(*) = 0' ; return $ this -> conn -> executeUpdate ( $ query , $ inserts ) ; }
Insert a row if the matching row does not exists.
Insert a row if the matching row does not exists .
// Is there a prettier alternative?
