Nested
Extends TableTable class supporting modified pre-order tree traversal behavior.
| since |
1.7.0 |
|---|---|
| package |
Joomla CMS |
Methods
__construct
Object constructor to set table and key fields. In most cases this will be overridden by child classes to explicitly set the table and key fields for a particular database table.
__construct( table, key, \Joomla\Database\DatabaseInterface db, \Joomla\Event\DispatcherInterface dispatcher = null) :
| since |
1.7.0 |
|---|
Arguments
- table
stringName of the table to model.- key
mixedName of the primary key field in the table or array of field names that compose the primary key.- db
DatabaseInterfaceObject which implements the DatabaseInterface.- dispatcher
DispatcherInterface|nullEvent dispatcher for this table
Response
mixed
_getAssetName
Method to compute the default name of the asset.
_getAssetName() :
The default name is in the form table_name.id where id is the value of the primary key of the table.
| since |
1.7.0 |
|---|
Response
string
_getAssetParentId
Method to get the parent asset under which to register this one.
_getAssetParentId(\Joomla\CMS\Table\Table table = null, int id = null) :
By default, all assets are registered to the ROOT node with ID, which will default to 1 if none exists. An extended class can define a table and ID to lookup. If the asset does not exist it will be created.
| since |
1.7.0 |
|---|
Arguments
- table
Table|nullA Table object for the asset parent.- id
int|nullId to look up
Response
int
_getAssetTitle
Method to return the title to use for the asset table.
_getAssetTitle() :
In tracking the assets a title is kept for each asset so that there is some context available in a unified access manager. Usually this would just return $this->title or $this->name or whatever is being used for the primary name of the row. If this method is not overridden, the asset name is used.
| since |
1.7.0 |
|---|
Response
stringThe string to use as the title in the asset table.
_getNode
Method to get nested set properties for a node in the tree.
_getNode( id, key = null) :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- id
intValue to look up the node by.- key
stringAn optional key to look up the node by (parent | left | right). If omitted, the primary key of the table is used.
Response
mixedBoolean false on failure or node object on success.
_getTreeRepositionData
Method to get various data necessary to make room in the tree at a location for a node and its children. The returned data object includes conditions for SQL WHERE clauses for updating left and right id values to make room for the node as well as the new left and right ids for the node.
_getTreeRepositionData( referenceNode, nodeWidth, position = 'before') :
| since |
1.7.0 |
|---|
Arguments
- referenceNode
objectA node object with at least a 'lft' and 'rgt' with which to make room in the tree around for a new node.- nodeWidth
intThe width of the node for which to make room in the tree.- position
stringThe position relative to the reference node where the room should be made.
Response
mixedBoolean false on failure or data object on success.
_lock
Method to lock the database table for writing.
_lock() :
| since |
1.7.0 |
|---|---|
| throws |
|
Response
boolTrue on success.
_logtable
Method to create a log table in the buffer optionally showing the query and/or data.
_logtable( showData = true, showQuery = true) :
| since |
1.7.0 |
|---|
Arguments
- showData
boolTrue to show data- showQuery
boolTrue to show query
Response
void
_runQuery
Runs a query and unlocks the database on an error.
_runQuery( query, errorMessage) :
| note |
Since 3.0.0 this method returns void and will rethrow the database exception. |
|---|---|
| since |
1.7.0 |
| throws |
|
Arguments
- query
mixedA string or DatabaseQuery object.- errorMessage
stringUnused.
Response
void
_unlock
Method to unlock the database table for writing.
_unlock() :
| since |
1.7.0 |
|---|
Response
boolTrue on success.
addIncludePath
Add a filesystem path where Table should search for table class files.
addIncludePath(array|string path = null) : mixed||string|int
| since |
1.7.0 |
|---|---|
| deprecated |
4.3 will be removed in 6.0 Should not be used anymore as tables are loaded through the MvcFactory |
Arguments
- path
array<string|int, mixed>|stringA filesystem path or array of filesystem paths to add.
Response
array<string|int, mixed>An array of filesystem paths to find Table classes in.
appendPrimaryKeys
Method to append the primary keys for this table to a query.
appendPrimaryKeys(\Joomla\Database\DatabaseQuery query, pk = null) :
| since |
3.1.4 |
|---|
Arguments
- query
DatabaseQueryA query object to append.- pk
mixedOptional primary key parameter.
Response
void
bind
Method to bind an associative array or object to the Table instance.This method only binds properties that are publicly accessible and optionally takes an array of properties to ignore when binding.
bind(array|object src, array|string ignore = []) :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- src
array<string|int, mixed>|objectAn associative array or object to bind to the Table instance.- ignore
array<string|int, mixed>|stringAn optional array or space separated list of properties to ignore while binding.
Response
boolTrue on success.
check
Checks that the object is valid and able to be stored.
check() :
This method checks that the parent_id is non-zero and exists in the database. Note that the root node (parent_id = 0) cannot be manipulated with this class.
| since |
1.7.0 |
|---|
Response
boolTrue if all checks pass.
checkIn
Method to check a row in if the necessary properties/fields exist.
checkIn( pk = null) :
Checking a row in will allow other users the ability to edit the row.
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- pk
mixedAn optional primary key value to check out. If not set the instance property value is used.
Response
boolTrue on success.
checkOut
Method to check a row out if the necessary properties/fields exist.
checkOut( userId, pk = null) :
To prevent race conditions while editing rows in a database, a row can be checked out if the fields 'checked_out' and 'checked_out_time' are available. While a row is checked out, any attempt to store the row by a user other than the one who checked the row out should be held until the row is checked in again.
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- userId
intThe Id of the user checking out the row.- pk
mixedAn optional primary key value to check out. If not set the instance property value is used.
Response
boolTrue on success.
debug
Sets the debug level on or off
debug( level) :
| since |
1.7.0 |
|---|
Arguments
- level
int0 = off, 1 = on
Response
void
def
Sets a default value if not already assigned
def( property, default = null) :
| since |
1.7.0 |
|---|---|
| deprecated |
4.3.0 will be removed in 7.0 Defining dynamic properties should not be used anymore |
Arguments
- property
stringThe name of the property.- default
mixedThe default value.
Response
mixed
delete
Method to delete a node and, optionally, its child nodes from the table.
delete( pk = null, children = true) :
| since |
1.7.0 |
|---|
Arguments
- pk
intThe primary key of the node to delete.- children
boolTrue to delete child nodes, false to move them up a level.
Response
boolTrue on success.
get
Returns a property of the object or the default value if the property is not set.
get( property, default = null) :
| since |
1.7.0 |
|---|---|
| see | CMSObject::getProperties() |
| deprecated |
4.3.0 will be removed in 7.0 Create a proper getter function for the property |
Arguments
- property
stringThe name of the property.- default
mixedThe default value.
Response
mixedThe value of the property.
getColumnAlias
Method to return the real name of a "special" column such as ordering, hits, published etc etc. In this way you are free to follow your db naming convention and use the built in \Joomla functions.
getColumnAlias( column) :
| since |
3.4 |
|---|
Arguments
- column
stringName of the "special" column (ie ordering, hits)
Response
stringThe string that identify the special
getDatabase
Get the database.
getDatabase() : \Joomla\Database\DatabaseInterface
| since |
5.4.0 |
|---|---|
| throws |
|
| note |
This method will be removed in 7.0 and DatabaseAwareTrait will be used instead. |
Response
DatabaseInterface
getDbo
Method to get the DatabaseInterface object.
getDbo() : \Joomla\Database\DatabaseInterface
| since |
1.7.0 |
|---|---|
| deprecated |
5.4.0 will be removed in 7.0 Use getDatabase() instead Example: $this->getDatabase(); |
Response
DatabaseInterfaceThe internal database driver object.
getError
Get the most recent error message.
getError( i = null, toString = true) :
| since |
1.7.0 |
|---|---|
| deprecated |
3.1.4 will be removed in 7.0 Will be removed without replacement Catch thrown Exceptions instead of getError |
Arguments
- i
intOption error index.- toString
boolIndicates if Exception objects should return their error message.
Response
stringError message
getErrors
Return all errors, if any.
getErrors() : mixed||string|int
| since |
1.7.0 |
|---|---|
| deprecated |
3.1.4 will be removed in 7.0 Will be removed without replacement Catch thrown Exceptions instead of getErrors |
Response
array<string|int, mixed>Array of error messages.
getFields
Get the columns from database table.
getFields( reload = false) :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- reload
boolflag to reload cache
Response
mixedAn array of the field names, or false if an error occurs.
getId
Returns the identity (primary key) value of this record
getId() :
| since |
4.0.0 |
|---|
Response
mixed
getInstance
Static method to get an instance of a Table class if it can be found in the table include paths.
getInstance( type, prefix = 'JTable', mixed||string|int config = []) : \Joomla\CMS\Table\Table|bool
To add include paths for searching for Table classes see Table::addIncludePath().
| since |
1.7.0 |
|---|---|
| deprecated |
4.3 will be removed in 6.0 Use the MvcFactory instead or instantiate the table class directly. Example: Factory::getApplication()->bootComponent('...')->getMVCFactory()->createTable($name, $prefix, $config); $table = new \Joomla\CMS\Table\Content($db); |
Arguments
- type
stringThe type (name) of the Table class to get an instance of.- prefix
stringAn optional prefix for the table class name.- config
array<string|int, mixed>An optional array of configuration values for the Table object.
Response
Table|boolA Table object if found or boolean false on failure.
getKeyName
Method to get the primary key field name for the table.
getKeyName( multiple = false) :
| since |
1.7.0 |
|---|
Arguments
- multiple
boolTrue to return all primary keys (as an array) or false to return just the first one (as a string).
Response
mixedArray of primary key field names or string containing the first primary key field.
getNextOrder
Method to get the next ordering value for a group of rows defined by an SQL WHERE clause.
getNextOrder( where = '') :
This is useful for placing a new item last in a group of items in the table.
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- where
stringWHERE clause to use for selecting the MAX(ordering) for the table.
Response
intThe next ordering value.
getPath
Method to get an array of nodes from a given node to its root.
getPath( pk = null, diagnostic = false) :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- pk
intPrimary key of the node for which to get the path.- diagnostic
boolOnly select diagnostic data for the nested sets.
Response
mixedAn array of node objects including the start node.
getPrimaryKey
Get the primary key values for this table using passed in values as a default.
getPrimaryKey(mixed||string|int keys = []) : mixed||string|int
| since |
3.1.4 |
|---|
Arguments
- keys
array<string|int, mixed>Optional primary key values to use.
Response
array<string|int, mixed>An array of primary key names and values.
getProperties
Returns an associative array of object properties.
getProperties( public = true) : mixed||string|int
| since |
1.7.0 |
|---|---|
| see | CMSObject::get() |
| deprecated |
4.3.0 will be removed in 7.0 Create a proper getter function for the property |
Arguments
- public
boolIf true, returns only the public properties.
Response
array<string|int, mixed>
getRootId
Gets the ID of the root item in the tree
getRootId() :
| since |
1.7.0 |
|---|
Response
mixedThe primary id of the root row, or false if not found and the internal error is set.
getRules
Method to get the rules for the record.
getRules() : \Joomla\CMS\Access\Rules
getTableName
Method to get the database table name for the class.
getTableName() :
| since |
1.7.0 |
|---|
Response
stringThe name of the database table being modeled.
getTree
Method to get a node and all its child nodes.
getTree( pk = null, diagnostic = false) :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- pk
intPrimary key of the node for which to get the tree.- diagnostic
boolOnly select diagnostic data for the nested sets.
Response
mixedBoolean false on failure or array of node objects on success.
hasField
Check if the record has a property (applying a column alias if it exists)
hasField( key) :
| since |
3.9.11 |
|---|
Arguments
- key
stringkey to be checked
Response
bool
hasPrimaryKey
Validate that the primary key has been set.
hasPrimaryKey() :
| since |
3.1.4 |
|---|
Response
boolTrue if the primary key(s) have been set.
hit
Method to increment the hits for a row if the necessary property/field exists.
hit( pk = null) :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- pk
mixedAn optional primary key value to increment. If not set the instance property value is used.
Response
boolTrue on success.
isCheckedOut
Method to determine if a row is checked out and therefore uneditable by a user.
isCheckedOut( with, against = null) :
If the row is checked out by the same user, then it is considered not checked out -- as the user can still edit it.
| since |
1.7.0 |
|---|
Arguments
- with
intThe user ID to perform the match with, if an item is checked out by this user the function will return false.- against
intThe user ID to perform the match against when the function is used as a static function.
Response
boolTrue if checked out.
isLeaf
Method to determine if a node is a leaf node in the tree (has no children).
isLeaf( pk = null) :
| note |
Since 3.0.0 this method returns null if the node does not exist. |
|---|---|
| since |
1.7.0 |
| throws |
|
Arguments
- pk
intPrimary key of the node to check.
Response
boolTrue if a leaf node, false if not or null if the node does not exist.
load
Method to load a row from the database by primary key and bind the fields to the Table instance properties.
load( keys = null, reset = true) :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- keys
mixedAn optional primary key value to load the row by, or an array of fields to match. If not set the instance property value is used.- reset
boolTrue to reset the default values before loading the new row.
Response
boolTrue if successful. False if row not found.
move
Method to move a row in the ordering sequence of a group of rows defined by an SQL WHERE clause.
move( delta, where = '') :
Negative numbers move the row up in the sequence and positive numbers move it down.
| since |
1.7.0 |
|---|
Arguments
- delta
intThe direction and magnitude to move the row in the ordering sequence.- where
stringWHERE clause to use for limiting the selection of rows to compact the ordering values.
Response
mixedBoolean true on success.
moveByReference
Method to move a node and its children to a new location in the tree.
moveByReference( referenceId, position = 'after', pk = null, recursiveUpdate = true) :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- referenceId
intThe primary key of the node to reference new location by.- position
stringLocation type string. ['before', 'after', 'first-child', 'last-child']- pk
intThe primary key of the node to move.- recursiveUpdate
boolFlag indicate that method recursiveUpdatePublishedColumn should be call.
Response
boolTrue on success.
orderDown
Method to move a node one position to the right in the same level.
orderDown( pk) :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- pk
intPrimary key of the node to move.
Response
boolTrue on success.
orderUp
Method to move a node one position to the left in the same level.
orderUp( pk) :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- pk
intPrimary key of the node to move.
Response
boolTrue on success.
publish
Method to set the publishing state for a node or list of nodes in the database table. The method respects rows checked out by other users and will attempt to checkin rows that it can after adjustments are made. The method will not allow you to set a publishing state higher than any ancestor node and will not allow you to set a publishing state on a node with a checked out child.
publish( pks = null, state = 1, userId) :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- pks
mixedAn optional array of primary key values to update. If not set the instance property value is used.- state
intThe publishing state. eg. [0 = unpublished, 1 = published]- userId
intThe user id of the user performing the operation.
Response
boolTrue on success.
rebuild
Method to recursively rebuild the whole nested set tree.
rebuild( parentId = null, leftId, level, path = '') :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- parentId
intThe root of the tree to rebuild.- leftId
intThe left id to start with in building the tree.- level
intThe level to assign to the current nodes.- path
stringThe path to the current nodes.
Response
int1 + value of root rgt on success, false on failure
rebuildPath
Method to rebuild the node's path field from the alias values of the nodes from the current node to the root node of the tree.
rebuildPath( pk = null) :
| since |
1.7.0 |
|---|
Arguments
- pk
intPrimary key of the node for which to get the path.
Response
boolTrue on success.
recursiveUpdatePublishedColumn
Method to recursive update published column for children rows.
recursiveUpdatePublishedColumn( pk, newState = null) :
| since |
3.7.0 |
|---|---|
| throws |
|
Arguments
- pk
intId number of row which published column was changed.- newState
intAn optional value for published column of row identified by $pk.
Response
boolTrue on success.
reorder
Method to compact the ordering values of rows in a group of rows defined by an SQL WHERE clause.
reorder(string|string[] where = '') :
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- where
string|array<string|int, string>WHERE clause to use for limiting the selection of rows to compact the ordering values.
Response
mixedBoolean True on success.
reset
Method to reset class properties to the defaults set in the class definition. It will ignore the primary key as well as any private class properties (except $_errors).
reset() :
| since |
3.2.1 |
|---|
Response
void
save
Method to provide a shortcut to binding, checking and storing a Table instance to the database table.
save(array|object src, orderingFilter = '', array|string ignore = '') :
The method will check a row in once the data has been stored and if an ordering filter is present will attempt to reorder the table rows based on the filter. The ordering filter is an instance property name. The rows that will be reordered are those whose value matches the Table instance for the property specified.
| since |
1.7.0 |
|---|
Arguments
- src
array<string|int, mixed>|objectAn associative array or object to bind to the Table instance.- orderingFilter
stringFilter for the order updating- ignore
array<string|int, mixed>|stringAn optional array or space separated list of properties to ignore while binding.
Response
boolTrue on success.
saveorder
Method to update order of table rows
saveorder(mixed||string|int idArray = null, mixed||string|int lftArray = null) : int|bool
| since |
1.7.0 |
|---|---|
| throws |
|
Arguments
- idArray
array<string|int, mixed>id numbers of rows to be reordered.- lftArray
array<string|int, mixed>lft values of rows to be reordered.
Response
int|bool1 + value of root rgt on success, false on failure.
set
Modifies a property of the object, creating it if it does not already exist.
set( property, value = null) :
| since |
1.7.0 |
|---|---|
| deprecated |
4.3.0 will be removed in 7.0 Create a proper setter function for the property |
Arguments
- property
stringThe name of the property.- value
mixedThe value of the property to set.
Response
mixedPrevious value of the property.
setColumnAlias
Method to register a column alias for a "special" column.
setColumnAlias( column, columnAlias) :
| since |
3.4 |
|---|
Arguments
- column
stringThe "special" column (ie ordering)- columnAlias
stringThe real column name (ie foo_ordering)
Response
void
setDatabase
Set the database.
setDatabase(\Joomla\Database\DatabaseInterface db) :
| since |
5.4.0 |
|---|---|
| note |
This method will be removed in 7.0 and DatabaseAwareTrait will be used instead. |
Arguments
- db
DatabaseInterfaceThe database.
Response
void
setDbo
Method to set the DatabaseInterface object.
setDbo(\Joomla\Database\DatabaseInterface db) :
| since |
1.7.0 |
|---|---|
| deprecated |
5.4.0 will be removed in 7.0 Use setDatabase() instead Example: $this->setDatabase($db); |
Arguments
- db
DatabaseInterfaceA DatabaseInterface object to be used by the table object.
Response
boolTrue on success.
setError
Add an error message.
setError( error) :
| since |
1.7.0 |
|---|---|
| deprecated |
3.1.4 will be removed in 7.0 Will be removed without replacement Throw an Exception instead of using setError |
Arguments
- error
stringError message.
Response
void
setLocation
Method to set the location of a node in the tree object. This method does not save the new location to the database, but will set it in the object so that when the node is stored it will be stored in the new location.
setLocation( referenceId, position = 'after') :
| note |
Since 3.0.0 this method returns void and throws an \InvalidArgumentException when an invalid position is passed. |
|---|---|
| see | Nested::$_validLocations |
| since |
1.7.0 |
| throws |
|
Arguments
- referenceId
intThe primary key of the node to reference new location by.- position
stringLocation type string.
Response
void
setProperties
Set the object properties based on a named array/hash.
setProperties( properties) :
| since |
1.7.0 |
|---|---|
| see | CMSObject::set() |
| deprecated |
4.3.0 will be removed in 7.0 Create a proper setter function for the property |
Arguments
- properties
mixedEither an associative array or another object.
Response
bool
setRules
Method to set rules for the record.
setRules( input) :
| since |
1.7.0 |
|---|
Arguments
- input
mixedA Rules object, JSON string, or array.
Response
void
setUseExceptions
If true then subclasses should throw exceptions rather than use getError and setError.
setUseExceptions( value) :
| since |
5.4.0 |
|---|---|
| deprecated |
7.0 |
Arguments
- value
boolThe value to set for the field.
Response
void
shouldUseExceptions
If true then subclasses should throw exceptions rather than use getError and setError.
shouldUseExceptions() :
| since |
5.4.0 |
|---|---|
| deprecated |
7.0 |
Response
bool
store
Method to store a node in the database table.
store( updateNulls = false) :
| since |
1.7.0 |
|---|
Arguments
- updateNulls
boolTrue to update null values as well.
Response
boolTrue on success.
Properties
_errors
An array of error messages or Exception objects.
| since |
1.7.0 |
|---|---|
| deprecated |
3.1.4 JError has been deprecated |
Type(s)
array<string|int, mixed>
useExceptions
Use exceptions rather than getError/setError.
| since |
5.4.0 |
|---|---|
| deprecated |
7.0 |
Type(s)
bool
_tbl
Name of the database table to model.
| since |
1.7.0 |
|---|
Type(s)
string
_tbl_key
Name of the primary key field in the table.
| since |
1.7.0 |
|---|
Type(s)
string
_tbl_keys
Name of the primary key fields in the table.
| since |
3.0.1 |
|---|
Type(s)
array<string|int, mixed>
_db
DatabaseInterface object.
| since |
1.7.0 |
|---|---|
| deprecated |
5.4.0 will be removed in 7.0 Use setDatabase() and getDatabase() instead Example: $this->setDatabase($db); |
Type(s)
DatabaseInterface
_trackAssets
Should rows be tracked as ACL assets?
| since |
1.7.0 |
|---|
Type(s)
bool
_locked
Indicator that the tables have been locked.
| since |
1.7.0 |
|---|
Type(s)
bool
_autoincrement
Indicates that the primary keys autoincrement.
| since |
3.1.4 |
|---|
Type(s)
bool
_columnAlias
Array with alias for "special" columns such as ordering, hits etc etc
| since |
3.4.0 |
|---|
Type(s)
array<string|int, mixed>
_jsonEncode
An array of key names to be json encoded in the bind function
| since |
3.3 |
|---|
Type(s)
array<string|int, mixed>
_supportNullValue
Indicates that columns fully support the NULL value in the database
| since |
3.10.0 |
|---|
Type(s)
bool
typeAlias
The UCM type alias. Used for tags, content versioning etc. Leave blank to effectively disable these features.
| since |
4.0.0 |
|---|
Type(s)
string
parent_id
Object property holding the primary key of the parent node. Provides adjacency list data for nodes.
| since |
1.7.0 |
|---|
Type(s)
int
level
Object property holding the depth level of the node in the tree.
| since |
1.7.0 |
|---|
Type(s)
int
lft
Object property holding the left value of the node for managing its placement in the nested sets tree.
| since |
1.7.0 |
|---|
Type(s)
int
rgt
Object property holding the right value of the node for managing its placement in the nested sets tree.
| since |
1.7.0 |
|---|
Type(s)
int
alias
Object property holding the alias of this node used to construct the full text path, forward-slash delimited.
| since |
1.7.0 |
|---|
Type(s)
string
_location
Object property to hold the location type to use when storing the row.
_location_id
Object property to hold the primary key of the location reference node to use when storing the row.
A combination of location type and reference node describes where to store the current node in the tree.
| since |
1.7.0 |
|---|
Type(s)
int
_cache
An array to cache values in recursive processes.
| since |
1.7.0 |
|---|
Type(s)
array<string|int, mixed>
_debug
Debug level
| since |
1.7.0 |
|---|
Type(s)
int
root_id
Cache for the root ID
| since |
3.3 |
|---|
Type(s)
int
_validLocations
Array declaring the valid location values for moving a node
| since |
3.7.0 |
|---|
Type(s)
array<string|int, mixed>