JDatabaseQuery
Inhaltsverzeichnis |
[Bearbeiten] Beschreibung
abstract class JDatabaseQuery
vereinfacht des Erstellen von Datenbankqueries mit einer speziell dafür ausgelegten Klasse.
[Bearbeiten] Definiert in
/libraries/joomla/database/query.php
[Bearbeiten] Status
[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
- JDatabaseQuery auf api.joomla.org
- JDatabase::getQuery