JDatabaseQuery

Aus Joomla! Dokumentation
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] Beschreibung

abstract class JDatabaseQuery

vereinfacht des Erstellen von Datenbankqueries mit einer speziell dafür ausgelegten Klasse.

[Bearbeiten] Definiert in

Folder blue.png /libraries/joomla/database/query.php

[Bearbeiten] Status

  • @since Joomla 11.1

[Bearbeiten] Importieren

Die Klasse muss nicht importiert werden, sondern kann einfach über die JDatabase Klasse bezogen werden.

[Bearbeiten] Wird erweitert von

JDatabaseQueryMySQL, JDatabaseQuerySQLSrv.

[Bearbeiten] Eigenschaften

Access Typ Name
protected JDatabase $db
protected string $type
protected JDatabaseQueryElement $element
protected JDatabaseQueryElement $select
protected JDatabaseQueryElement $delete
protected JDatabaseQueryElement $update
protected JDatabaseQueryElement $insert
protected JDatabaseQueryElement $from
protected JDatabaseQueryElement $join
protected JDatabaseQueryElement $set
protected JDatabaseQueryElement $where
protected JDatabaseQueryElement $group
protected JDatabaseQueryElement $having
protected JDatabaseQueryElement $columns
protected JDatabaseQueryElement $values
protected JDatabaseQueryElement $order
protected object $autoIncrementField

[Bearbeiten] Methoden

Access Name
public __call($method, $args)

Magic method to provide method alias support for quote() and quoteName().ToDo Beschreibung übersetzen

public __clone()

Method to provide deep copy support to nested objects and arrays when cloning.ToDo Beschreibung übersetzen

public __get($name)

Magic function to get protected variable valueToDo Beschreibung übersetzen

public __toString()

Magic function to convert the query to a string.ToDo Beschreibung übersetzen

public castAsChar($value)

Casts a value to a char.ToDo Beschreibung übersetzen

public charLength($field)

Gets the number of characters in a string.ToDo Beschreibung übersetzen

public clear([$clause = null])

Setzt das gesamte Queryobjekt oder einen bestimmten Teil von ihm zurück.

public columns($columns)

Adds a column, or array of column names that would be used for an INSERT INTO statement.ToDo Beschreibung übersetzen

public concatenate($values, [$separator = null])

Concatenates an array of column names or values.ToDo Beschreibung übersetzen

public currentTimestamp()

Gets the current date and time.ToDo Beschreibung übersetzen

public dateFormat()

Returns a PHP date() function compliant date format for the database driver.ToDo Beschreibung übersetzen

public delete([$table = null])

Setzt die DELETE-Anweisung des Queries.

public dump()

Creates a formatted dump of the query for debugging purposes.ToDo Beschreibung übersetzen

public escape($text, [$extra = false])

Method to escape a string for usage in an SQL statement.ToDo Beschreibung übersetzen

public from($tables)

Bestimmt eine oder mehrere Tabellen auf denen der Query ausgeführt werden soll.

public group($columns)

Add a grouping column to the GROUP clause of the query.ToDo Beschreibung übersetzen

public having($conditions, [$glue = 'AND'])

A conditions to the HAVING clause of the query.ToDo Beschreibung übersetzen

public innerJoin($condition)

Vereinfacht den Aufruf von JDatabaseQuery/join.

public insert($table, [$incrementField = false])

Setzt die INSERT-Anweisung des Queries.

public join($type, $conditions)

Setzt einen SQL JOIN in dem Objekt.

public leftJoin($condition)

Vereinfacht den Aufruf von JDatabaseQuery/join.

public length($value)

Get the length of a string in bytes.ToDo Beschreibung übersetzen

public nullDate([$quoted = true])

Get the null or zero representation of a timestamp for the database driver.ToDo Beschreibung übersetzen

public order($columns)

Add a ordering column to the ORDER clause of the query.ToDo Beschreibung übersetzen

public outerJoin($condition)

Vereinfacht den Aufruf von JDatabaseQuery/join.

public quote($text, [$escape = true])

Method to quote and optionally escape a string to database requirements for insertion into the database.ToDo Beschreibung übersetzen

public quoteName($name)

Wrap an SQL statement identifier name such as column, table or database names in quotes to prevent injection risks and reserved word conflicts.ToDo Beschreibung übersetzen

public rightJoin($condition)

Vereinfacht den Aufruf von JDatabaseQuery/join.

public select($columns)

Setzt eine einzelne oder mehrere SELECT-Anweisung des Queries.

public set($conditions, [$glue = ','])

Add a single condition string, or an array of strings to the SET clause of the query.ToDo Beschreibung übersetzen

public update($table)

Setzt die UPDATE-Anweisung des Queries.

public values($values)

Adds a tuple, or array of tuples that would be used as values for an INSERT INTO statement.ToDo Beschreibung übersetzen

public where($conditions, [$glue = 'AND'])

Add a single condition, or an array of conditions to the WHERE clause of the query.ToDo Beschreibung übersetzen

[Bearbeiten] Beispiele

[Bearbeiten] Objekt erzeugen

$db = JFactory::getDbo();
 
/* Ein (leeres) JDatabaseQuery Objekt beziehen.
Ohne Parameter wird das aktuelle Queryobjekt mit seinen Werten zurückgegeben */
$query = $db->getQuery(true);

[Bearbeiten] Debuggen

Bei der Übergabe an an die Datenbank und generell bei der Umwandlung des Objekts in eine Zeichenkette wird automatisch die magische __toString() Methode aufgerufen. Dies lässt sich auch zum Debuggen der Queries nutzen.

$query->from('#__tabelle AS t');
$query->select('feld1 AS Feld');
$query->select('feld2 AS Feld2');
$query->where('id = '.(int)$id);
$query->where('title = '.$db->quote('Der Titel'));
 
echo '<pre>'.$query.'</pre>';

Ausgabe:

SELECT t.feld1 AS Feld,t.feld2 AS Feld2
FROM #__tabelle AS t
WHERE t.id = 4711 AND t.title = 'Der Titel'

[Bearbeiten] Verketten

Da die Methoden von JDatabaseQuery immer 'sich selbst' zurück geben, kann man diese Methoden auch verketten.

$query->select('t.feld1')->from('#__tabelle AS t');

Bei längeren Queries kann man diese auch zur besseren Übersicht auf mehrere Zeilen verteilen.

$query
   ->from('#__tabelle AS t')
   ->select('t.feld1 AS Feld')
   ->select('t.feld2 AS Feld2')
   ->where('t.id = '.(int)$id)
   ->where('t.title = '.$db->quote('Der Titel'));

[Bearbeiten] Siehe auch

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Sonstiges
Team Navigation
Werkzeuge