Class luya\cms\models\Website

Inheritanceluya\cms\models\Website » luya\admin\ngrest\base\NgRestModel » yii\db\ActiveRecord » yii\db\BaseActiveRecord » yii\base\Model » yii\base\Component » yii\base\BaseObject
ImplementsArrayAccess, IteratorAggregate, luya\admin\base\GenericSearchInterface, luya\admin\ngrest\base\NgRestModelInterface, yii\base\Arrayable, yii\base\Configurable, yii\base\StaticInstanceInterface, yii\db\ActiveRecordInterface
Uses Traitsluya\admin\traits\SoftDeleteTrait, yii\base\ArrayableTrait, yii\base\StaticInstanceTrait
Available since version4.0.0
Source Code https://github.com/luyadev/luya-module-cms/blob/master/src/models/Website.php

Represents the Website-Containers.

Public Properties

Hide inherited properties

Property Type Description Defined By
$activeValidators yii\validators\Validator[] The validators applicable to the current $scenario. yii\base\Model
$aliases string luya\cms\models\Website
$attributes array Attribute values (name => value). yii\base\Model
$behaviors yii\base\Behavior[] List of behaviors attached to this component. yii\base\Component
$default_lang string luya\cms\models\Website
$dirtyAttributes array The changed attribute values (name-value pairs). yii\db\BaseActiveRecord
$errors array Errors for all attributes or the specified attribute. yii\base\Model
$firstErrors array The first errors. yii\base\Model
$group_ids string Restricts access to the website from the admin area to specific user groups. luya\cms\models\Website
$host string luya\cms\models\Website
$i18n array Defines all fields which should be casted as i18n fields. luya\admin\ngrest\base\NgRestModel
$isNewRecord boolean Whether the record is new and should be inserted when calling save(). yii\db\BaseActiveRecord
$isNgRestContext boolean Whether the current model is in api context or not. luya\admin\ngrest\base\NgRestModel
$is_active boolean luya\cms\models\Website
$is_default boolean luya\cms\models\Website
$is_deleted boolean luya\cms\models\Website
$iterator ArrayIterator An iterator for traversing the items in the list. yii\base\Model
$lang luya\cms\models\Website
$name string luya\cms\models\Website
$navContainers luya\cms\models\NavContainer[] luya\cms\models\Website
$ngRestCallType boolean|string luya\admin\ngrest\base\NgRestModel
$ngRestConfig luya\admin\ngrest\Config luya\admin\ngrest\base\NgRestModel
$ngRestPrimaryKey string luya\admin\ngrest\base\NgRestModel
$ngRestServices mixed The service data. luya\admin\ngrest\base\NgRestModel
$oldAttributes array The old attribute values (name-value pairs). yii\db\BaseActiveRecord
$oldPrimaryKey mixed The old primary key value. yii\db\BaseActiveRecord
$primaryKey mixed The primary key value. yii\db\BaseActiveRecord
$redirect_to_host boolean luya\cms\models\Website
$relatedRecords array An array of related records indexed by relation names. yii\db\BaseActiveRecord
$scenario string The scenario that this model is in. yii\base\Model
$theme luya\cms\models\Website
$theme_id integer luya\cms\models\Website
$user_ids string Restricts access to the website from the admin area to specific users. luya\cms\models\Website
$validators ArrayObject|yii\validators\Validator[] All the validators declared in the model. yii\base\Model

Protected Properties

Hide inherited properties

Property Type Description Defined By
$ngRestServiceArray luya\admin\ngrest\base\NgRestModel

Public Methods

Hide inherited methods

Method Description Defined By
__call() Calls the named method which is not a class method. yii\base\Component
__clone() This method is called after the object is created by cloning an existing one. yii\base\Model
__construct() Constructor. luya\admin\ngrest\base\NgRestModel
__get() PHP getter magic method. yii\db\BaseActiveRecord
__isset() Checks if a property value is null. yii\db\BaseActiveRecord
__set() PHP setter magic method. yii\db\BaseActiveRecord
__unset() Sets a component property to be null. yii\db\BaseActiveRecord
activeAttributes() Returns the attribute names that are subject to validation in the current scenario. yii\base\Model
addError() Adds a new error to the specified attribute. yii\base\Model
addErrors() Adds a list of errors. yii\base\Model
addNgRestServiceData() luya\admin\ngrest\base\NgRestModel
afterDelete() This method is invoked after deleting a record. yii\db\BaseActiveRecord
afterFind() This method is called when the AR object is created and populated with the query result. luya\admin\ngrest\base\NgRestModel
afterRefresh() This method is called when the AR object is refreshed. yii\db\BaseActiveRecord
afterSave() This method is called at the end of inserting or updating a record. yii\db\BaseActiveRecord
afterValidate() This method is invoked after validation ends. yii\base\Model
attachBehavior() Attaches a behavior to this component. yii\base\Component
attachBehaviors() Attaches a list of behaviors to the component. yii\base\Component
attributeHints() Returns the attribute hints. yii\base\Model
attributeLabels() Returns the attribute labels. luya\cms\models\Website
attributes() Returns the list of all attribute names of the model. yii\db\ActiveRecord
beforeDelete() This method is invoked before deleting a record. yii\db\BaseActiveRecord
beforeSave() This method is called at the beginning of inserting or updating a record. yii\db\BaseActiveRecord
beforeValidate() This method is invoked before validation starts. yii\base\Model
behaviors() Returns a list of behaviors that this component should behave as. yii\base\Component
canGetProperty() Returns a value indicating whether a property can be read. yii\db\BaseActiveRecord
canSetProperty() Returns a value indicating whether a property can be set. yii\db\BaseActiveRecord
className() Returns the fully qualified name of this class. yii\base\BaseObject
clearErrors() Removes errors for all attributes or a single attribute. yii\base\Model
createValidators() Creates validator objects based on the validation rules specified in rules(). yii\base\Model
delete() Deletes the table row corresponding to this active record. yii\db\ActiveRecord
deleteAll() Deletes rows in the table using the provided conditions. yii\db\ActiveRecord
detachBehavior() Detaches a behavior from the component. yii\base\Component
detachBehaviors() Detaches all behaviors from the component. yii\base\Component
ensureBehaviors() Makes sure that the behaviors declared in behaviors() are attached to this component. yii\base\Component
equals() Returns a value indicating whether the given active record is the same as the current one. yii\db\ActiveRecord
eventAfterDelete() luya\cms\models\Website
eventAfterInsert() luya\cms\models\Website
eventBeforeDelete() luya\cms\models\Website
extraFields() Returns the list of fields that can be expanded further and returned by toArray(). luya\admin\ngrest\base\NgRestModel
fieldStateDescriber() Describes the fields shoudl be used to the perform the soft deleteion tasks. luya\admin\traits\SoftDeleteTrait
fields() Returns the list of fields that should be returned by default by toArray() when no specific fields are specified. yii\db\BaseActiveRecord
find() Creates an yii\db\ActiveQueryInterface instance for query purpose. luya\admin\ngrest\base\NgRestModel
findActiveQueryBehaviors() Attach behaviors to the Active Query. luya\admin\ngrest\base\NgRestModel
findAll() Returns a list of active record models that match the specified primary key value(s) or a set of column values. yii\db\BaseActiveRecord
findBySql() Creates an yii\db\ActiveQuery instance with a given SQL statement. yii\db\ActiveRecord
findLatestPrimaryKeyValue() Get an array with the latest primary key value. luya\admin\ngrest\base\NgRestModel
findOne() Returns a single active record model instance by a primary key or an array of column values. yii\db\BaseActiveRecord
formName() Returns the form name that this model class should use. yii\base\Model
generateAttributeLabel() Generates a user friendly attribute label based on the give attribute name. yii\base\Model
generateNgRestRelations() Generate an array with NgRestRelation objects luya\admin\ngrest\base\NgRestModel
genericSearch() The Query which is going to be performend to the concret implementation. luya\admin\ngrest\base\NgRestModel
genericSearchFields() The fields to lookup with the search query. luya\admin\ngrest\base\NgRestModel
genericSearchHiddenFields() An array with fields which will be hidden in the search output, but are available for the State Provider functions. luya\admin\ngrest\base\NgRestModel
genericSearchStateProvider() The state provider is used to click on the items. Retuns an array with a configuration for the angular state provider. Example luya\admin\ngrest\base\NgRestModel
getActiveValidators() Returns the validators applicable to the current $scenario. yii\base\Model
getAttribute() Returns the named attribute value. yii\db\BaseActiveRecord
getAttributeHint() Returns the text hint for the specified attribute. yii\db\BaseActiveRecord
getAttributeLabel() Returns the text label for the specified attribute. yii\db\BaseActiveRecord
getAttributes() Returns attribute values. yii\base\Model
getBehavior() Returns the named behavior object. yii\base\Component
getBehaviors() Returns all behaviors attached to this component. yii\base\Component
getDb() Returns the database connection used by this AR class. yii\db\ActiveRecord
getDirtyAttributes() Returns the attribute values that have been modified since they are loaded or saved most recently. yii\db\BaseActiveRecord
getErrorSummary() Returns the errors for all attributes as a one-dimensional array. yii\base\Model
getErrors() Returns the errors for all attributes or a single attribute. yii\base\Model
getFirstError() Returns the first error of the specified attribute. yii\base\Model
getFirstErrors() Returns the first error of every attribute in the model. yii\base\Model
getI18nOldValue() Get the old/original i18n value from the database. luya\admin\ngrest\base\NgRestModel
getIsNewRecord() Returns a value indicating whether the current record is new. yii\db\BaseActiveRecord
getIsNgRestContext() Whether the current model is in api context (REST SCENARIOS or CALL TYPE) context or not. luya\admin\ngrest\base\NgRestModel
getIterator() Returns an iterator for traversing the attributes in the model. yii\base\Model
getLang() luya\cms\models\Website
getNgRestCallType() Determine the current call type based on get params as they can change the output behavior to make the ngrest crud list view. luya\admin\ngrest\base\NgRestModel
getNgRestConfig() Build and call the full config object if not build yet for this model. luya\admin\ngrest\base\NgRestModel
getNgRestPrimaryKey() Getter method for NgRest Primary Key. luya\admin\ngrest\base\NgRestModel
getNgRestRelationByIndex() Get the NgRest Relation definition object. luya\admin\ngrest\base\NgRestModel
getNgRestScopeConfigOptions() Return the scope definition third entry looking for button condition Currently support only buttonCondition luya\admin\ngrest\base\NgRestModel
getNgRestServices() Triggers the event service event and returns the resolved data. luya\admin\ngrest\base\NgRestModel
getOldAttribute() Returns the old value of the named attribute. yii\db\BaseActiveRecord
getOldAttributes() Returns the old attribute values. yii\db\BaseActiveRecord
getOldPrimaryKey() Returns the old primary key value(s). yii\db\BaseActiveRecord
getPrimaryKey() Returns the primary key value(s). yii\db\BaseActiveRecord
getRelatedRecords() Returns all populated related records. yii\db\BaseActiveRecord
getRelation() Returns the relation object with the specified name. yii\db\BaseActiveRecord
getScenario() Returns the scenario that this model is used in. yii\base\Model
getTableSchema() Returns the schema information of the DB table associated with this AR class. yii\db\ActiveRecord
getTheme() luya\cms\models\Website
getValidators() Returns all the validators declared in rules(). yii\base\Model
handleNgRestActiveButton() Handle a given active button based on the hash (classname in sha1). luya\admin\ngrest\base\NgRestModel
hasAttribute() Returns a value indicating whether the model has an attribute with the specified name. yii\db\BaseActiveRecord
hasErrors() Returns a value indicating whether there is any validation error. yii\base\Model
hasEventHandlers() Returns a value indicating whether there is any handler attached to the named event. yii\base\Component
hasMany() See yii\db\BaseActiveRecord::hasMany() for more info. yii\db\ActiveRecord
hasMethod() Returns a value indicating whether a method is defined. yii\base\Component
hasOne() See yii\db\BaseActiveRecord::hasOne() for more info. yii\db\ActiveRecord
hasProperty() Returns a value indicating whether a property is defined for this component. yii\base\Component
i18nAttributeFallbackValue() Returns the value for an i18n field before it was casted to the output for the current active language if empty. luya\admin\ngrest\base\NgRestModel
i18nAttributeLanguageValue() Returns the value of an i18n attribute for the given language. luya\admin\ngrest\base\NgRestModel
i18nAttributeValue() Checks whether given attribute is in the list of i18n fields, if so the field value will be decoded and the value for the current active language is returned. luya\admin\ngrest\base\NgRestModel
i18nAttributesValue() Returns the decoded i18n value for a set of attributes. luya\admin\ngrest\base\NgRestModel
init() luya\cms\models\Website
insert() Inserts a row into the associated database table using the attribute values of this record. yii\db\ActiveRecord
instance() Returns static class instance, which can be used to obtain meta information. yii\base\StaticInstanceTrait
instantiate() Creates an active record instance. yii\db\BaseActiveRecord
internalAndWhere() This method will be used to performe the where querys of ngrestFind() and find() of the ActiveRecord. luya\admin\traits\SoftDeleteTrait
isAttributeActive() Returns a value indicating whether the attribute is active in the current scenario. yii\base\Model
isAttributeChanged() Returns a value indicating whether the named attribute has been changed. yii\db\BaseActiveRecord
isAttributeRequired() Returns a value indicating whether the attribute is required. yii\base\Model
isAttributeSafe() Returns a value indicating whether the attribute is safe for massive assignments. yii\base\Model
isI18n() Whether a field is i18n or not. luya\admin\ngrest\base\NgRestModel
isPrimaryKey() Returns a value indicating whether the given set of attributes represents the primary key for this model. yii\db\BaseActiveRecord
isRelationPopulated() Check whether the named relation has been populated with records. yii\db\BaseActiveRecord
isTransactional() Returns a value indicating whether the specified operation is transactional in the current $scenario. yii\db\ActiveRecord
link() Establishes the relationship between two models. yii\db\BaseActiveRecord
load() Populates the model with input data. yii\base\Model
loadDefaultValues() Loads default values from database table schema. yii\db\ActiveRecord
loadMultiple() Populates a set of models with the data from end user. yii\base\Model
markAttributeDirty() Marks an attribute dirty. yii\db\BaseActiveRecord
ngRestActiveButtons() Define Active Buttons. luya\cms\models\Website
ngRestActiveSelections() Define Active Selections. luya\admin\ngrest\base\NgRestModel
ngRestActiveWindows() Define Active Window configurations. luya\admin\ngrest\base\NgRestModel
ngRestApiEndpoint() luya\cms\models\Website
ngRestAttributeGroups() luya\cms\models\Website
ngRestAttributeTypes() Define the field types for ngrest, to use ngRestConfigDefine(). luya\cms\models\Website
ngRestByPrimaryKeyOne() The a single object from a primary key definition. luya\admin\ngrest\base\NgRestModel
ngRestConfig() Defines the base inline configuration for the current Model. luya\admin\ngrest\base\NgRestModel
ngRestConfigDefine() Inject data from the model into the config, usage exmple in ngRestConfig method context: luya\admin\ngrest\base\NgRestModel
ngRestConfigOptions() luya\cms\models\Website
ngRestExport() Format the values for export generator. luya\admin\ngrest\base\NgRestModel
ngRestExtraAttributeTypes() Same as ngRestAttributeTypes() but used for extraField instead of field. luya\admin\ngrest\base\NgRestModel
ngRestFilters() Define an array with filters you can select from the CRUD list. luya\admin\ngrest\base\NgRestModel
ngRestFind() The NgRestFind is used when performing the crud list index overivew. You can override this method in order to hide data from the ngRestFind command which populates all data from the database. luya\admin\ngrest\base\NgRestModel
ngRestFullQuerySearch() Search trough the whole table as ajax fallback when pagination is enabled. luya\admin\ngrest\base\NgRestModel
ngRestGroupByExpanded() When enabled, the field groups in the form are by default expanded (open) or not (closed). luya\admin\ngrest\base\NgRestModel
ngRestGroupByField() Enable the Grouping by a field option by default. Allows you to predefine the default group field. luya\admin\ngrest\base\NgRestModel
ngRestListOrder() Define the default ordering for the ngrest list when loading, by default the primary key sorted ascending is used. To override the method for example sorting by a timestamp field: luya\admin\ngrest\base\NgRestModel
ngRestPools() Define data pools. luya\admin\ngrest\base\NgRestModel
ngRestRelations() Define your relations in order to access the relation data and manage them directly in the same view. luya\admin\ngrest\base\NgRestModel
ngRestScopes() Defines the scope which field should be used for what situation. luya\cms\models\Website
off() Detaches an existing event handler from this component. yii\base\Component
offsetExists() Returns whether there is an element at the specified offset. yii\db\BaseActiveRecord
offsetGet() Returns the element at the specified offset. yii\base\Model
offsetSet() Sets the element at the specified offset. yii\base\Model
offsetUnset() Sets the element value at the specified offset to null. yii\db\BaseActiveRecord
on() Attaches an event handler to an event. yii\base\Component
onUnsafeAttribute() This method is invoked when an unsafe attribute is being massively assigned. yii\base\Model
optimisticLock() Returns the name of the column that stores the lock version for implementing optimistic locking. yii\db\BaseActiveRecord
populateRecord() Populates an active record object using a row of data from the database/storage. yii\db\ActiveRecord
populateRelation() Populates the named relation with the related records. yii\db\BaseActiveRecord
primaryKey() Returns the primary key name(s) for this AR class. yii\db\ActiveRecord
refresh() Repopulates this active record with the latest data. yii\db\ActiveRecord
rules() luya\cms\models\Website
safeAttributes() Returns the attribute names that are safe to be massively assigned in the current scenario. yii\base\Model
save() Saves the current record. yii\db\BaseActiveRecord
scenarios() Returns a list of scenarios and the corresponding active attributes. luya\admin\ngrest\base\NgRestModel
setAttribute() Sets the named attribute value. yii\db\BaseActiveRecord
setAttributes() Sets the attribute values in a massive way. yii\base\Model
setI18nOldValue() Set the old json value from a i18n database value. luya\admin\ngrest\base\NgRestModel
setIsNewRecord() Sets the value indicating whether the record is new. yii\db\BaseActiveRecord
setNgRestPrimaryKey() Setter method for NgRest Primary Key luya\admin\ngrest\base\NgRestModel
setOldAttribute() Sets the old value of the named attribute. yii\db\BaseActiveRecord
setOldAttributes() Sets the old attribute values. yii\db\BaseActiveRecord
setScenario() Sets the scenario for the model. yii\base\Model
tableName() luya\cms\models\Website
toArray() Converts the model into an array. yii\base\ArrayableTrait
transactions() luya\cms\models\Website
trigger() Triggers an event. yii\base\Component
unlink() Destroys the relationship between two models. yii\db\BaseActiveRecord
unlinkAll() Destroys the relationship in current model. yii\db\BaseActiveRecord
update() Saves the changes to this active record into the associated database table. yii\db\ActiveRecord
updateAll() Updates the whole table using the provided attribute values and conditions. yii\db\ActiveRecord
updateAllCounters() Updates the whole table using the provided counter changes and conditions. yii\db\ActiveRecord
updateAttributes() Updates the specified attributes. yii\db\BaseActiveRecord
updateCounters() Updates one or several counter columns for the current AR object. yii\db\BaseActiveRecord
validate() Performs the data validation. yii\base\Model
validateMultiple() Validates multiple models. yii\base\Model

Protected Methods

Hide inherited methods

Method Description Defined By
createRelationQuery() Creates a query instance for has-one or has-many relation. yii\db\BaseActiveRecord
deleteInternal() Deletes an ActiveRecord without considering transaction. yii\db\ActiveRecord
extractFieldsFor() Extract nested fields from a fields collection for a given root field Nested fields are separated with dots (.). e.g: "item.id" The previous example would extract "id". yii\base\ArrayableTrait
extractRootFields() Extracts the root field names from nested fields. yii\base\ArrayableTrait
insertInternal() Inserts an ActiveRecord into DB without considering transaction. yii\db\ActiveRecord
refreshInternal() Repopulates this active record with the latest data from a newly fetched instance. yii\db\BaseActiveRecord
resolveFields() Determines which fields can be returned by toArray(). yii\base\ArrayableTrait
runI18nContextOnFindPlugin() Run an attribute plugin in i18n context in order to ensure plugin functions. luya\admin\ngrest\base\NgRestModel
updateInternal() yii\db\BaseActiveRecord

Events

Hide inherited events

Event Type Description Defined By
EVENT_AFTER_DELETE yii\db\Event An event that is triggered after a record is deleted. yii\db\BaseActiveRecord
EVENT_AFTER_FIND yii\db\Event An event that is triggered after the record is created and populated with query result. yii\db\BaseActiveRecord
EVENT_AFTER_INSERT yii\db\AfterSaveEvent An event that is triggered after a record is inserted. yii\db\BaseActiveRecord
EVENT_AFTER_REFRESH yii\db\Event An event that is triggered after a record is refreshed. (available since version 2.0.8) yii\db\BaseActiveRecord
EVENT_AFTER_UPDATE yii\db\AfterSaveEvent An event that is triggered after a record is updated. yii\db\BaseActiveRecord
EVENT_AFTER_VALIDATE yii\base\Event An event raised at the end of validate() yii\base\Model
EVENT_BEFORE_DELETE yii\base\ModelEvent An event that is triggered before deleting a record. yii\db\BaseActiveRecord
EVENT_BEFORE_INSERT yii\base\ModelEvent An event that is triggered before inserting a record. yii\db\BaseActiveRecord
EVENT_BEFORE_UPDATE yii\base\ModelEvent An event that is triggered before updating a record. yii\db\BaseActiveRecord
EVENT_BEFORE_VALIDATE yii\base\ModelEvent An event raised at the beginning of validate(). yii\base\Model
EVENT_INIT yii\db\Event An event that is triggered when the record is initialized via init(). yii\db\BaseActiveRecord

Constants

Hide inherited constants

Constant Value Description Defined By
EVENT_AFTER_NGREST_FIND 'afterNgrestFind' luya\admin\ngrest\base\NgRestModel
EVENT_AFTER_NGREST_UPDATE_FIND 'afterNgrestUpdateFind' luya\admin\ngrest\base\NgRestModel
EVENT_SERVICE_NGREST 'serviceNgrest' luya\admin\ngrest\base\NgRestModel
OP_ALL 0x7 All three operations: insert, update, delete. This is a shortcut of the expression: OP_INSERT | OP_UPDATE | OP_DELETE. yii\db\ActiveRecord
OP_DELETE 0x4 The delete operation. This is mainly used when overriding transactions() to specify which operations are transactional. yii\db\ActiveRecord
OP_INSERT 0x1 The insert operation. This is mainly used when overriding transactions() to specify which operations are transactional. yii\db\ActiveRecord
OP_UPDATE 0x2 The update operation. This is mainly used when overriding transactions() to specify which operations are transactional. yii\db\ActiveRecord
SCENARIO_DEFAULT 'default' The name of the default scenario. yii\base\Model
SCENARIO_RESTCREATE \luya\admin\base\RestActiveController::SCENARIO_RESTCREATE luya\admin\ngrest\base\NgRestModel
SCENARIO_RESTUPDATE \luya\admin\base\RestActiveController::SCENARIO_RESTUPDATE luya\admin\ngrest\base\NgRestModel

Property Details

Hide inherited properties

$aliases public property
public string $aliases null
$default_lang public property
public string $default_lang null
$group_ids public property

Restricts access to the website from the admin area to specific user groups.

public string $group_ids null
$host public property
public string $host null
$is_active public property
public boolean $is_active null
$is_default public property
public boolean $is_default null
$is_deleted public property
public boolean $is_deleted null
$lang public read-only property
public void getLang ( )
$name public property
public string $name null
$navContainers public property
$redirect_to_host public property
public boolean $redirect_to_host null
$theme public read-only property
public void getTheme ( )
$theme_id public property
public integer $theme_id null
$user_ids public property

Restricts access to the website from the admin area to specific users.

public string $user_ids null

Method Details

Hide inherited methods

__call() public method

Defined in: yii\base\Component::__call()

Calls the named method which is not a class method.

This method will check if any attached behavior has the named method and will execute it if available.

Do not call this method directly as it is a PHP magic method that will be implicitly called when an unknown method is being invoked.

public mixed __call ( $name, $params )
$name string

The method name

$params array

Method parameters

return mixed

The method return value

throws yii\base\UnknownMethodException

when calling unknown method

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() public method

Defined in: yii\base\Model::__clone()

This method is called after the object is created by cloning an existing one.

It removes all behaviors because they are attached to the old object.

public void __clone ( )

                public function __clone()
{
    parent::__clone();
    $this->_errors = null;
    $this->_validators = null;
}

            
__construct() public method

Defined in: luya\admin\ngrest\base\NgRestModel::__construct()

Constructor.

The default implementation does two things:

  • Initializes the object with the given configuration $config.
  • Call init().

If this method is overridden in a child class, it is recommended that

  • the last parameter of the constructor is a configuration array, like $config here.
  • call the parent implementation at the end of the constructor.
public void __construct ( $config = [] )
$config array

Name-value pairs that will be used to initialize the object properties

                public function __construct($config = [])
{
    $this->attachBehaviors([
        'NgRestEventBehavior' => [
            'class' => NgRestEventBehavior::class,
            'plugins' => $this->getNgRestConfig()->getPlugins(),
        ],
        'LogBehavior' => [
            'class' => LogBehavior::class,
            'api' => static::ngRestApiEndpoint(),
        ],
    ]);
    parent::__construct($config);
}

            
__get() public method

Defined in: yii\db\BaseActiveRecord::__get()

PHP getter magic method.

This method is overridden so that attributes and related objects can be accessed like properties.

See also getAttribute().

public mixed __get ( $name )
$name string

Property name

return mixed

Property value

throws yii\base\InvalidArgumentException

if relation name is wrong

                public function __get($name)
{
    if (isset($this->_attributes[$name]) || array_key_exists($name, $this->_attributes)) {
        return $this->_attributes[$name];
    }
    if ($this->hasAttribute($name)) {
        return null;
    }
    if (isset($this->_related[$name]) || array_key_exists($name, $this->_related)) {
        return $this->_related[$name];
    }
    $value = parent::__get($name);
    if ($value instanceof ActiveQueryInterface) {
        $this->setRelationDependencies($name, $value);
        return $this->_related[$name] = $value->findFor($name, $this);
    }
    return $value;
}

            
__isset() public method

Defined in: yii\db\BaseActiveRecord::__isset()

Checks if a property value is null.

This method overrides the parent implementation by checking if the named attribute is null or not.

public boolean __isset ( $name )
$name string

The property name or the event name

return boolean

Whether the property value is null

                public function __isset($name)
{
    try {
        return $this->__get($name) !== null;
    } catch (\Exception $t) {
        return false;
    } catch (\Throwable $e) {
        return false;
    }
}

            
__set() public method

Defined in: yii\db\BaseActiveRecord::__set()

PHP setter magic method.

This method is overridden so that AR attributes can be accessed like properties.

public void __set ( $name, $value )
$name string

Property name

$value mixed

Property value

                public function __set($name, $value)
{
    if ($this->hasAttribute($name)) {
        if (
            !empty($this->_relationsDependencies[$name])
            && (!array_key_exists($name, $this->_attributes) || $this->_attributes[$name] !== $value)
        ) {
            $this->resetDependentRelations($name);
        }
        $this->_attributes[$name] = $value;
    } else {
        parent::__set($name, $value);
    }
}

            
__unset() public method

Defined in: yii\db\BaseActiveRecord::__unset()

Sets a component property to be null.

This method overrides the parent implementation by clearing the specified attribute value.

public void __unset ( $name )
$name string

The property name or the event name

                public function __unset($name)
{
    if ($this->hasAttribute($name)) {
        unset($this->_attributes[$name]);
        if (!empty($this->_relationsDependencies[$name])) {
            $this->resetDependentRelations($name);
        }
    } elseif (array_key_exists($name, $this->_related)) {
        unset($this->_related[$name]);
    } elseif ($this->getRelation($name, false) === null) {
        parent::__unset($name);
    }
}

            
activeAttributes() public method

Defined in: yii\base\Model::activeAttributes()

Returns the attribute names that are subject to validation in the current scenario.

public string[] activeAttributes ( )
return string[]

Safe attribute names

                public function activeAttributes()
{
    $scenario = $this->getScenario();
    $scenarios = $this->scenarios();
    if (!isset($scenarios[$scenario])) {
        return [];
    }
    $attributes = array_keys(array_flip($scenarios[$scenario]));
    foreach ($attributes as $i => $attribute) {
        if (strncmp($attribute, '!', 1) === 0) {
            $attributes[$i] = substr($attribute, 1);
        }
    }
    return $attributes;
}

            
addError() public method

Defined in: yii\base\Model::addError()

Adds a new error to the specified attribute.

public void addError ( $attribute, $error '' )
$attribute string

Attribute name

$error string

New error message

                public function addError($attribute, $error = '')
{
    $this->_errors[$attribute][] = $error;
}

            
addErrors() public method (available since version 2.0.2)

Defined in: yii\base\Model::addErrors()

Adds a list of errors.

public void addErrors ( array $items )
$items array

A list of errors. The array keys must be attribute names. The array values should be error messages. If an attribute has multiple errors, these errors must be given in terms of an array. You may use the result of getErrors() as the value for this parameter.

                public function addErrors(array $items)
{
    foreach ($items as $attribute => $errors) {
        if (is_array($errors)) {
            foreach ($errors as $error) {
                $this->addError($attribute, $error);
            }
        } else {
            $this->addError($attribute, $errors);
        }
    }
}

            
addNgRestServiceData() public method
public void addNgRestServiceData ( $field, $data )
$field string
$data mixed

                public function addNgRestServiceData($field, $data)
{
    $this->ngRestServiceArray[$field] = $data;
}

            
afterDelete() public method

Defined in: yii\db\BaseActiveRecord::afterDelete()

This method is invoked after deleting a record.

The default implementation raises the EVENT_AFTER_DELETE event. You may override this method to do postprocessing after the record is deleted. Make sure you call the parent implementation so that the event is raised properly.

public void afterDelete ( )

                public function afterDelete()
{
    $this->trigger(self::EVENT_AFTER_DELETE);
}

            
afterFind() public method

Defined in: luya\admin\ngrest\base\NgRestModel::afterFind()

This method is called when the AR object is created and populated with the query result.

The default implementation will trigger an EVENT_AFTER_FIND event. When overriding this method, make sure you call the parent implementation to ensure the event is triggered.

public void afterFind ( )

                public function afterFind()
{
    if ($this->getNgRestCallType()) {
        if ($this->getNgRestCallType() == 'list') {
            $this->trigger(self::EVENT_AFTER_NGREST_FIND);
        }
        if ($this->getNgRestCallType() == 'update') {
            $this->trigger(self::EVENT_AFTER_NGREST_UPDATE_FIND);
        }
    } else {
        return parent::afterFind();
    }
}

            
afterRefresh() public method (available since version 2.0.8)

Defined in: yii\db\BaseActiveRecord::afterRefresh()

This method is called when the AR object is refreshed.

The default implementation will trigger an EVENT_AFTER_REFRESH event. When overriding this method, make sure you call the parent implementation to ensure the event is triggered.

public void afterRefresh ( )

                public function afterRefresh()
{
    $this->trigger(self::EVENT_AFTER_REFRESH);
}

            
afterSave() public method

Defined in: yii\db\BaseActiveRecord::afterSave()

This method is called at the end of inserting or updating a record.

The default implementation will trigger an EVENT_AFTER_INSERT event when $insert is true, or an EVENT_AFTER_UPDATE event if $insert is false. The event class used is yii\db\AfterSaveEvent. When overriding this method, make sure you call the parent implementation so that the event is triggered.

public void afterSave ( $insert, $changedAttributes )
$insert boolean

Whether this method called while inserting a record. If false, it means the method is called while updating a record.

$changedAttributes array

The old values of attributes that had changed and were saved. You can use this parameter to take action based on the changes made for example send an email when the password had changed or implement audit trail that tracks all the changes. $changedAttributes gives you the old attribute values while the active record ($this) has already the new, updated values.

Note that no automatic type conversion performed by default. You may use yii\behaviors\AttributeTypecastBehavior to facilitate attribute typecasting. See https://www.yiiframework.com/doc-2.0/guide-db-active-record.html#attributes-typecasting.

                public function afterSave($insert, $changedAttributes)
{
    $this->trigger($insert ? self::EVENT_AFTER_INSERT : self::EVENT_AFTER_UPDATE, new AfterSaveEvent([
        'changedAttributes' => $changedAttributes,
    ]));
}

            
afterValidate() public method

Defined in: yii\base\Model::afterValidate()

This method is invoked after validation ends.

The default implementation raises an afterValidate event. You may override this method to do postprocessing after validation. Make sure the parent implementation is invoked so that the event can be raised.

public void afterValidate ( )

                public function afterValidate()
{
    $this->trigger(self::EVENT_AFTER_VALIDATE);
}

            
attachBehavior() public method

Defined in: yii\base\Component::attachBehavior()

Attaches a behavior to this component.

This method will create the behavior object based on the given configuration. After that, the behavior object will be attached to this component by calling the yii\base\Behavior::attach() method.

See also detachBehavior().

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

The name of the behavior.

$behavior string|array|yii\base\Behavior

The behavior configuration. This can be one of the following:

return yii\base\Behavior

The behavior object

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() public method

Defined in: yii\base\Component::attachBehaviors()

Attaches a list of behaviors to the component.

Each behavior is indexed by its name and should be a yii\base\Behavior object, a string specifying the behavior class, or an configuration array for creating the behavior.

See also attachBehavior().

public void attachBehaviors ( $behaviors )
$behaviors array

List of behaviors to be attached to the component

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
attributeHints() public method (available since version 2.0.4)

Defined in: yii\base\Model::attributeHints()

Returns the attribute hints.

Attribute hints are mainly used for display purpose. For example, given an attribute isPublic, we can declare a hint Whether the post should be visible for not logged in users, which provides user-friendly description of the attribute meaning and can be displayed to end users.

Unlike label hint will not be generated, if its explicit declaration is omitted.

Note, in order to inherit hints defined in the parent class, a child class needs to merge the parent hints with child hints using functions such as array_merge().

public array attributeHints ( )
return array

Attribute hints (name => hint)

                public function attributeHints()
{
    return [];
}

            
attributeLabels() public method

Returns the attribute labels.

Attribute labels are mainly used for display purpose. For example, given an attribute firstName, we can declare a label First Name which is more user-friendly and can be displayed to end users.

By default an attribute label is generated using generateAttributeLabel(). This method allows you to explicitly specify attribute labels.

Note, in order to inherit labels defined in the parent class, a child class needs to merge the parent labels with child labels using functions such as array_merge().

public array attributeLabels ( )
return array

Attribute labels (name => label)

                public function attributeLabels()
{
    return [
        'name' => Module::t('model_website_name_label'),
        'host' => Module::t('model_website_host_label'),
        'aliases' => Module::t('model_website_aliases_label'),
        'is_active' => Module::t('model_website_is_active_label'),
        'is_default' => Module::t('model_website_is_default_label'),
        'redirect_to_host' => Module::t('model_website_redirect_to_host_label'),
        'theme_id' => Module::t('model_website_theme_id_label'),
    ];
}

            
attributes() public method

Defined in: yii\db\ActiveRecord::attributes()

Returns the list of all attribute names of the model.

The default implementation will return all column names of the table associated with this AR class.

public array attributes ( )
return array

List of attribute names.

                public function attributes()
{
    return static::getTableSchema()->getColumnNames();
}

            
beforeDelete() public method

Defined in: yii\db\BaseActiveRecord::beforeDelete()

This method is invoked before deleting a record.

The default implementation raises the EVENT_BEFORE_DELETE event. When overriding this method, make sure you call the parent implementation like the following:

public function beforeDelete()
{
    if (!parent::beforeDelete()) {
        return false;
    }

    // ...custom code here...
    return true;
}
public boolean beforeDelete ( )
return boolean

Whether the record should be deleted. Defaults to true.

                public function beforeDelete()
{
    $event = new ModelEvent();
    $this->trigger(self::EVENT_BEFORE_DELETE, $event);
    return $event->isValid;
}

            
beforeSave() public method

Defined in: yii\db\BaseActiveRecord::beforeSave()

This method is called at the beginning of inserting or updating a record.

The default implementation will trigger an EVENT_BEFORE_INSERT event when $insert is true, or an EVENT_BEFORE_UPDATE event if $insert is false. When overriding this method, make sure you call the parent implementation like the following:

public function beforeSave($insert)
{
    if (!parent::beforeSave($insert)) {
        return false;
    }

    // ...custom code here...
    return true;
}
public boolean beforeSave ( $insert )
$insert boolean

Whether this method called while inserting a record. If false, it means the method is called while updating a record.

return boolean

Whether the insertion or updating should continue. If false, the insertion or updating will be cancelled.

                public function beforeSave($insert)
{
    $event = new ModelEvent();
    $this->trigger($insert ? self::EVENT_BEFORE_INSERT : self::EVENT_BEFORE_UPDATE, $event);
    return $event->isValid;
}

            
beforeValidate() public method

Defined in: yii\base\Model::beforeValidate()

This method is invoked before validation starts.

The default implementation raises a beforeValidate event. You may override this method to do preliminary checks before validation. Make sure the parent implementation is invoked so that the event can be raised.

public boolean beforeValidate ( )
return boolean

Whether the validation should be executed. Defaults to true. If false is returned, the validation will stop and the model is considered invalid.

                public function beforeValidate()
{
    $event = new ModelEvent();
    $this->trigger(self::EVENT_BEFORE_VALIDATE, $event);
    return $event->isValid;
}

            
behaviors() public method

Defined in: yii\base\Component::behaviors()

Returns a list of behaviors that this component should behave as.

Child classes may override this method to specify the behaviors they want to behave as.

The return value of this method should be an array of behavior objects or configurations indexed by behavior names. A behavior configuration can be either a string specifying the behavior class or an array of the following structure:

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

Note that a behavior class must extend from yii\base\Behavior. Behaviors can be attached using a name or anonymously. When a name is used as the array key, using this name, the behavior can later be retrieved using getBehavior() or be detached using detachBehavior(). Anonymous behaviors can not be retrieved or detached.

Behaviors declared in this method will be attached to the component automatically (on demand).

public array behaviors ( )
return array

The behavior configurations.

                public function behaviors()
{
    return [];
}

            
canGetProperty() public method

Defined in: yii\db\BaseActiveRecord::canGetProperty()

Returns a value indicating whether a property can be read.

A property can be read if:

  • the class has a getter method associated with the specified name (in this case, property name is case-insensitive);
  • the class has a member variable with the specified name (when $checkVars is true);
  • an attached behavior has a readable property of the given name (when $checkBehaviors is true).
public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

The property name

$checkVars boolean

Whether to treat member variables as properties

$checkBehaviors boolean

Whether to treat behaviors' properties as properties of this component

return boolean

Whether the property can be read

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (parent::canGetProperty($name, $checkVars, $checkBehaviors)) {
        return true;
    }
    try {
        return $this->hasAttribute($name);
    } catch (\Exception $e) {
        // `hasAttribute()` may fail on base/abstract classes in case automatic attribute list fetching used
        return false;
    }
}

            
canSetProperty() public method

Defined in: yii\db\BaseActiveRecord::canSetProperty()

Returns a value indicating whether a property can be set.

A property can be written if:

  • the class has a setter method associated with the specified name (in this case, property name is case-insensitive);
  • the class has a member variable with the specified name (when $checkVars is true);
  • an attached behavior has a writable property of the given name (when $checkBehaviors is true).
public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

The property name

$checkVars boolean

Whether to treat member variables as properties

$checkBehaviors boolean

Whether to treat behaviors' properties as properties of this component

return boolean

Whether the property can be written

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (parent::canSetProperty($name, $checkVars, $checkBehaviors)) {
        return true;
    }
    try {
        return $this->hasAttribute($name);
    } catch (\Exception $e) {
        // `hasAttribute()` may fail on base/abstract classes in case automatic attribute list fetching used
        return false;
    }
}

            
className() public static method
Deprecated since 2.0.14. On PHP >=5.5, use ::class instead.

Defined in: yii\base\BaseObject::className()

Returns the fully qualified name of this class.

public static string className ( )
return string

The fully qualified name of this class.

                public static function className()
{
    return get_called_class();
}

            
clearErrors() public method

Defined in: yii\base\Model::clearErrors()

Removes errors for all attributes or a single attribute.

public void clearErrors ( $attribute null )
$attribute string|null

Attribute name. Use null to remove errors for all attributes.

                public function clearErrors($attribute = null)
{
    if ($attribute === null) {
        $this->_errors = [];
    } else {
        unset($this->_errors[$attribute]);
    }
}

            
createRelationQuery() protected method (available since version 2.0.12)

Defined in: yii\db\BaseActiveRecord::createRelationQuery()

Creates a query instance for has-one or has-many relation.

See also:

protected yii\db\ActiveQueryInterface createRelationQuery ( $class, $link, $multiple )
$class string

The class name of the related record.

$link array

The primary-foreign key constraint.

$multiple boolean

Whether this query represents a relation to more than one record.

return yii\db\ActiveQueryInterface

The relational query object.

                protected function createRelationQuery($class, $link, $multiple)
{
    /* @var $class ActiveRecordInterface */
    /* @var $query ActiveQuery */
    $query = $class::find();
    $query->primaryModel = $this;
    $query->link = $link;
    $query->multiple = $multiple;
    return $query;
}

            
createValidators() public method

Defined in: yii\base\Model::createValidators()

Creates validator objects based on the validation rules specified in rules().

Unlike getValidators(), each time this method is called, a new list of validators will be returned.

public ArrayObject createValidators ( )
return ArrayObject

Validators

throws yii\base\InvalidConfigException

if any validation rule configuration is invalid

                public function createValidators()
{
    $validators = new ArrayObject();
    foreach ($this->rules() as $rule) {
        if ($rule instanceof Validator) {
            $validators->append($rule);
        } elseif (is_array($rule) && isset($rule[0], $rule[1])) { // attributes, validator type
            $validator = Validator::createValidator($rule[1], $this, (array) $rule[0], array_slice($rule, 2));
            $validators->append($validator);
        } else {
            throw new InvalidConfigException('Invalid validation rule: a rule must specify both attribute names and validator type.');
        }
    }
    return $validators;
}

            
delete() public method

Defined in: yii\db\ActiveRecord::delete()

Deletes the table row corresponding to this active record.

This method performs the following steps in order:

  1. call beforeDelete(). If the method returns false, it will skip the rest of the steps;
  2. delete the record from the database;
  3. call afterDelete().

In the above step 1 and 3, events named EVENT_BEFORE_DELETE and EVENT_AFTER_DELETE will be raised by the corresponding methods.

public integer|false delete ( )
return integer|false

The number of rows deleted, or false if the deletion is unsuccessful for some reason. Note that it is possible the number of rows deleted is 0, even though the deletion execution is successful.

throws yii\db\StaleObjectException

if optimistic locking is enabled and the data being deleted is outdated.

throws Throwable

in case delete failed.

                public function delete()
{
    if (!$this->isTransactional(self::OP_DELETE)) {
        return $this->deleteInternal();
    }
    $transaction = static::getDb()->beginTransaction();
    try {
        $result = $this->deleteInternal();
        if ($result === false) {
            $transaction->rollBack();
        } else {
            $transaction->commit();
        }
        return $result;
    } catch (\Exception $e) {
        $transaction->rollBack();
        throw $e;
    } catch (\Throwable $e) {
        $transaction->rollBack();
        throw $e;
    }
}

            
deleteAll() public static method

Defined in: yii\db\ActiveRecord::deleteAll()

Deletes rows in the table using the provided conditions.

For example, to delete all customers whose status is 3:

Customer::deleteAll('status = 3');

Warning: If you do not specify any condition, this method will delete all rows in the table.

Note that this method will not trigger any events. If you need EVENT_BEFORE_DELETE or EVENT_AFTER_DELETE to be triggered, you need to find the models first and then call delete() on each of them. For example an equivalent of the example above would be:

$models = Customer::find()->where('status = 3')->all();
foreach ($models as $model) {
    $model->delete();
}

For a large set of models you might consider using yii\db\ActiveQuery::each() to keep memory usage within limits.

public static integer deleteAll ( $condition null, $params = [] )
$condition string|array|null

The conditions that will be put in the WHERE part of the DELETE SQL. Please refer to yii\db\Query::where() on how to specify this parameter.

$params array

The parameters (name => value) to be bound to the query.

return integer

The number of rows deleted

                public static function deleteAll($condition = null, $params = [])
{
    $command = static::getDb()->createCommand();
    $command->delete(static::tableName(), $condition, $params);
    return $command->execute();
}

            
deleteInternal() protected method

Defined in: yii\db\ActiveRecord::deleteInternal()

Deletes an ActiveRecord without considering transaction.

protected integer|false deleteInternal ( )
return integer|false

The number of rows deleted, or false if the deletion is unsuccessful for some reason. Note that it is possible the number of rows deleted is 0, even though the deletion execution is successful.

throws yii\db\StaleObjectException

                protected function deleteInternal()
{
    if (!$this->beforeDelete()) {
        return false;
    }
    // we do not check the return value of deleteAll() because it's possible
    // the record is already deleted in the database and thus the method will return 0
    $condition = $this->getOldPrimaryKey(true);
    $lock = $this->optimisticLock();
    if ($lock !== null) {
        $condition[$lock] = $this->$lock;
    }
    $result = static::deleteAll($condition);
    if ($lock !== null && !$result) {
        throw new StaleObjectException('The object being deleted is outdated.');
    }
    $this->setOldAttributes(null);
    $this->afterDelete();
    return $result;
}

            
detachBehavior() public method

Defined in: yii\base\Component::detachBehavior()

Detaches a behavior from the component.

The behavior's yii\base\Behavior::detach() method will be invoked.

public yii\base\Behavior|null detachBehavior ( $name )
$name string

The behavior's name.

return yii\base\Behavior|null

The detached behavior. Null if the behavior does not exist.

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() public method

Defined in: yii\base\Component::detachBehaviors()

Detaches all behaviors from the component.

public void detachBehaviors ( )

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() public method

Defined in: yii\base\Component::ensureBehaviors()

Makes sure that the behaviors declared in behaviors() are attached to this component.

public void ensureBehaviors ( )

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
equals() public method

Defined in: yii\db\ActiveRecord::equals()

Returns a value indicating whether the given active record is the same as the current one.

The comparison is made by comparing the table names and the primary key values of the two active records. If one of the records is new they are also considered not equal.

public boolean equals ( $record )
$record yii\db\ActiveRecord

Record to compare to

return boolean

Whether the two active records refer to the same row in the same database table.

                public function equals($record)
{
    if ($this->isNewRecord || $record->isNewRecord) {
        return false;
    }
    return static::tableName() === $record->tableName() && $this->getPrimaryKey() === $record->getPrimaryKey();
}

            
eventAfterDelete() public method

public void eventAfterDelete ( )

                public function eventAfterDelete()
{
    $this->updateAttributes(['is_active' => false]);
}

            
eventAfterInsert() public method

public void eventAfterInsert ( $event )
$event

                public function eventAfterInsert($event)
{
    $defaultContainer = new NavContainer();
    $defaultContainer->name = 'Default Container';
    $defaultContainer->alias = 'default';
    $defaultContainer->website_id = $this->primaryKey;
    $defaultContainer->setScenario($this->scenario);
    if (!$defaultContainer->save()) {
        throw new Exception($defaultContainer->getErrorSummary(true));
    }
}

            
eventBeforeDelete() public method

public void eventBeforeDelete ( )

                public function eventBeforeDelete()
{
    if ($this->is_default) {
        throw new Exception('Default website cannot delete.');
    }
}

            
extraFields() public method

Defined in: luya\admin\ngrest\base\NgRestModel::extraFields()

Returns the list of fields that can be expanded further and returned by toArray().

This method is similar to fields() except that the list of fields returned by this method are not returned by default by toArray(). Only when field names to be expanded are explicitly specified when calling toArray(), will their values be exported.

The default implementation returns an empty array.

You may override this method to return a list of expandable fields based on some context information (e.g. the current application user).

public array extraFields ( )
return array

The list of expandable field names or field definitions. Please refer to fields() on the format of the return value.

                public function extraFields()
{
    $extraFieldKeys = array_keys($this->ngRestExtraAttributeTypes());
    return array_merge(parent::extraFields(), $this->extractRootFields($extraFieldKeys));
}

            
extractFieldsFor() protected method (available since version 2.0.14)

Defined in: yii\base\ArrayableTrait::extractFieldsFor()

Extract nested fields from a fields collection for a given root field Nested fields are separated with dots (.). e.g: "item.id" The previous example would extract "id".

protected array extractFieldsFor ( array $fields, $rootField )
$fields array

The fields requested for extraction

$rootField string

The root field for which we want to extract the nested fields

return array

Nested fields extracted for the given field

                protected function extractFieldsFor(array $fields, $rootField)
{
    $result = [];
    foreach ($fields as $field) {
        if (0 === strpos($field, "{$rootField}.")) {
            $result[] = preg_replace('/^' . preg_quote($rootField, '/') . '\./i', '', $field);
        }
    }
    return array_unique($result);
}

            
extractRootFields() protected method (available since version 2.0.14)

Defined in: yii\base\ArrayableTrait::extractRootFields()

Extracts the root field names from nested fields.

Nested fields are separated with dots (.). e.g: "item.id" The previous example would extract "item".

protected array extractRootFields ( array $fields )
$fields array

The fields requested for extraction

return array

Root fields extracted from the given nested fields

                protected function extractRootFields(array $fields)
{
    $result = [];
    foreach ($fields as $field) {
        $result[] = current(explode('.', $field, 2));
    }
    if (in_array('*', $result, true)) {
        $result = [];
    }
    return array_unique($result);
}

            
fieldStateDescriber() public static method

Defined in: luya\admin\traits\SoftDeleteTrait::fieldStateDescriber()

Describes the fields shoudl be used to the perform the soft deleteion tasks.

Examples value of the method:

return [
    'is_deleted' => [true, false], // on delete sets `is_deleted = true`; on find add where `where(['is_deleted' => false]);`.
    'is_inactive' => true, // on delete sets `is_inactive = true`; on find add where `where([is_inactive' => !true]);`.
];
public static array fieldStateDescriber ( )
return array

Returns an array with a key which desribes what field should be updated on delete and observed on find, the value for the corresponding field can be an array or a string/numeric

  • array: The first value is the value for the delete command, the second for the find where
  • string/nummeric: The value will be inverted with "!" opposite operator, this can lead into problems

if you want to override the default implemenation to match your custom models you should always use the former type of state description.

                public static function fieldStateDescriber()
{
    return [
        'is_deleted' => [true, false]
    ];
}

            
fields() public method

Defined in: yii\db\BaseActiveRecord::fields()

Returns the list of fields that should be returned by default by toArray() when no specific fields are specified.

The default implementation returns the names of the columns whose values have been populated into this record.

A field is a named element in the returned array by toArray().

This method should return an array of field names or field definitions. If the former, the field name will be treated as an object property name whose value will be used as the field value. If the latter, the array key should be the field name while the array value should be the corresponding field definition which can be either an object property name or a PHP callable returning the corresponding field value. The signature of the callable should be:

function ($model, $field) {
    // return field value
}

For example, the following code declares four fields:

  • email: the field name is the same as the property name email;
  • firstName and lastName: the field names are firstName and lastName, and their values are obtained from the first_name and last_name properties;
  • fullName: the field name is fullName. Its value is obtained by concatenating first_name and last_name.
return [
    'email',
    'firstName' => 'first_name',
    'lastName' => 'last_name',
    'fullName' => function ($model) {
        return $model->first_name . ' ' . $model->last_name;
    },
];

In this method, you may also want to return different lists of fields based on some context information. For example, depending on $scenario or the privilege of the current application user, you may return different sets of visible fields or filter out some fields.

The default implementation of this method returns attributes() indexed by the same attribute names.

public array fields ( )
return array

The list of field names or field definitions.

                public function fields()
{
    $fields = array_keys($this->_attributes);
    return array_combine($fields, $fields);
}

            
find() public static method

Defined in: luya\admin\ngrest\base\NgRestModel::find()

Creates an yii\db\ActiveQueryInterface instance for query purpose.

The returned yii\db\ActiveQueryInterface instance can be further customized by calling methods defined in yii\db\ActiveQueryInterface before one() or all() is called to return populated ActiveRecord instances. For example,

// find the customer whose ID is 1
$customer = Customer::find()->where(['id' => 1])->one();

// find all active customers and order them by their age:
$customers = Customer::find()
    ->where(['status' => 1])
    ->orderBy('age')
    ->all();

This method is also called by yii\db\BaseActiveRecord::hasOne() and yii\db\BaseActiveRecord::hasMany() to create a relational query.

You may override this method to return a customized query. For example,

class Customer extends ActiveRecord
{
    public static function find()
    {
        // use CustomerQuery instead of the default ActiveQuery
        return new CustomerQuery(get_called_class());
    }
}

The following code shows how to apply a default condition for all queries:

class Customer extends ActiveRecord
{
    public static function find()
    {
        return parent::find()->where(['deleted' => false]);
    }
}

// Use andWhere()/orWhere() to apply the default condition
// SELECT FROM customer WHERE `deleted`=:deleted AND age>30
$customers = Customer::find()->andWhere('age>30')->all();

// Use where() to ignore the default condition
// SELECT FROM customer WHERE age>30
$customers = Customer::find()->where('age>30')->all();


public static luya\admin\ngrest\base\NgRestActiveQuery find ( )
return luya\admin\ngrest\base\NgRestActiveQuery

The newly created yii\db\ActiveQuery instance.

                public static function find()
{
    $config = [];
    foreach (static::findActiveQueryBehaviors() as $name => $class) {
        $config['as ' . $name] = $class;
    }
    return new NgRestActiveQuery(static::class, $config);
}

            
findActiveQueryBehaviors() public static method (available since version 3.4.0)

Defined in: luya\admin\ngrest\base\NgRestModel::findActiveQueryBehaviors()

Attach behaviors to the Active Query.

Attach behaviours to every new {{\luya\admin\ngrest\base\NgRestActiveQuery}} on find() but not ngRestFind(). Returns a list of behaviors that the query component should behave as.

As behavior methods can be access from the inner class, use full functions can be used inside the active query. It also enables the option to share standardized behaviors with functions (conditions), for example a soft delete condition.

A behavior example:

class MySuperBehavioir extends yii\base\Behavior
{
    public function active($isActive = true)
    {
         return $this->andWhere(['is_active' => $isActive]);
    }
}

After attaching this behavior, it can be used like MyModel::find()->active()->one().

Whenever possible, directly create a custom Active Query, as it provides full IDE support. The behavior does not, the example above will even show an IDE error because the mmethod andWhere() does not exsist in the yii\base\Behavior class.

The return value of this method should be an array of behavior objects or configurations indexed by behavior names. A behavior configuration can be either a string specifying the behavior class or an array of the following structure:

public static function findActiveQueryBehaviors()
{
    return [
        'behaviorName' => [
            'class' => 'BehaviorClass',
            'property1' => 'value1',
            'property2' => 'value2',
         ]
    ]
}
public static array findActiveQueryBehaviors ( )

                public static function findActiveQueryBehaviors()
{
    return [];
}

            
findAll() public static method

Defined in: yii\db\BaseActiveRecord::findAll()

Returns a list of active record models that match the specified primary key value(s) or a set of column values.

The method accepts:

  • a scalar value (integer or string): query by a single primary key value and return an array containing the corresponding record (or an empty array if not found).
  • a non-associative array: query by a list of primary key values and return the corresponding records (or an empty array if none was found). Note that an empty condition will result in an empty result as it will be interpreted as a search for primary keys and not an empty WHERE condition.
  • an associative array of name-value pairs: query by a set of attribute values and return an array of records matching all of them (or an empty array if none was found). Note that ['id' => 1, 2] is treated as a non-associative array. Column names are limited to current records table columns for SQL DBMS, or filtered otherwise to be limted to simple filter conditions.
  • a yii\db\Expression: The expression will be used directly. (@since 2.0.37)

This method will automatically call the all() method and return an array of ActiveRecord instances.

Note: As this is a short-hand method only, using more complex conditions, like ['!=', 'id', 1] will not work. If you need to specify more complex conditions, use find() in combination with where() instead.

See the following code for usage examples:

// find the customers whose primary key value is 10
$customers = Customer::findAll(10);

// the above code is equivalent to:
$customers = Customer::find()->where(['id' => 10])->all();

// find the customers whose primary key value is 10, 11 or 12.
$customers = Customer::findAll([10, 11, 12]);

// the above code is equivalent to:
$customers = Customer::find()->where(['id' => [10, 11, 12]])->all();

// find customers whose age is 30 and whose status is 1
$customers = Customer::findAll(['age' => 30, 'status' => 1]);

// the above code is equivalent to:
$customers = Customer::find()->where(['age' => 30, 'status' => 1])->all();

If you need to pass user input to this method, make sure the input value is scalar or in case of array condition, make sure the array structure can not be changed from the outside:

// yii\web\Controller ensures that $id is scalar
public function actionView($id)
{
    $model = Post::findOne($id);
    // ...
}

// explicitly specifying the colum to search, passing a scalar or array here will always result in finding a single record
$model = Post::findOne(['id' => Yii::$app->request->get('id')]);

// do NOT use the following code! it is possible to inject an array condition to filter by arbitrary column values!
$model = Post::findOne(Yii::$app->request->get('id'));
public static static[] findAll ( $condition )
$condition mixed

Primary key value or a set of column values

return yii\db\BaseActiveRecord[]

An array of ActiveRecord instances, or an empty array if nothing matches.

                public static function findAll($condition)
{
    return static::findByCondition($condition)->all();
}

            
findBySql() public static method

Defined in: yii\db\ActiveRecord::findBySql()

Creates an yii\db\ActiveQuery instance with a given SQL statement.

Note that because the SQL statement is already specified, calling additional query modification methods (such as where(), order()) on the created yii\db\ActiveQuery instance will have no effect. However, calling with(), asArray() or indexBy() is still fine.

Below is an example:

$customers = Customer::findBySql('SELECT * FROM customer')->all();
public static yii\db\ActiveQuery findBySql ( $sql, $params = [] )
$sql string

The SQL statement to be executed

$params array

Parameters to be bound to the SQL statement during execution.

return yii\db\ActiveQuery

The newly created yii\db\ActiveQuery instance

                public static function findBySql($sql, $params = [])
{
    $query = static::find();
    $query->sql = $sql;
    return $query->params($params);
}

            
findLatestPrimaryKeyValue() public static method (available since version 2.0.0)

Defined in: luya\admin\ngrest\base\NgRestModel::findLatestPrimaryKeyValue()

Get an array with the latest primary key value.

public static array findLatestPrimaryKeyValue ( )
return array

An array with latest primary key value, for example [10] or if composite keys [10,4]

                public static function findLatestPrimaryKeyValue()
{
    $orderBy = [];
    foreach (static::primaryKey() as $pkName) {
        $orderBy[$pkName] = SORT_DESC;
    }
    return self::ngRestFind()->select(static::primaryKey())->orderBy($orderBy)->asArray()->limit(1)->column();
}

            
findOne() public static method

Defined in: yii\db\BaseActiveRecord::findOne()

Returns a single active record model instance by a primary key or an array of column values.

The method accepts:

  • a scalar value (integer or string): query by a single primary key value and return the corresponding record (or null if not found).
  • a non-associative array: query by a list of primary key values and return the first record (or null if not found).
  • an associative array of name-value pairs: query by a set of attribute values and return a single record matching all of them (or null if not found). Note that ['id' => 1, 2] is treated as a non-associative array. Column names are limited to current records table columns for SQL DBMS, or filtered otherwise to be limited to simple filter conditions.
  • a yii\db\Expression: The expression will be used directly. (@since 2.0.37)

That this method will automatically call the one() method and return an ActiveRecord instance.

Note: As this is a short-hand method only, using more complex conditions, like ['!=', 'id', 1] will not work. If you need to specify more complex conditions, use find() in combination with where() instead.

See the following code for usage examples:

// find a single customer whose primary key value is 10
$customer = Customer::findOne(10);

// the above code is equivalent to:
$customer = Customer::find()->where(['id' => 10])->one();

// find the customers whose primary key value is 10, 11 or 12.
$customers = Customer::findOne([10, 11, 12]);

// the above code is equivalent to:
$customers = Customer::find()->where(['id' => [10, 11, 12]])->one();

// find the first customer whose age is 30 and whose status is 1
$customer = Customer::findOne(['age' => 30, 'status' => 1]);

// the above code is equivalent to:
$customer = Customer::find()->where(['age' => 30, 'status' => 1])->one();

If you need to pass user input to this method, make sure the input value is scalar or in case of array condition, make sure the array structure can not be changed from the outside:

// yii\web\Controller ensures that $id is scalar
public function actionView($id)
{
    $model = Post::findOne($id);
    // ...
}

// explicitly specifying the colum to search, passing a scalar or array here will always result in finding a single record
$model = Post::findOne(['id' => Yii::$app->request->get('id')]);

// do NOT use the following code! it is possible to inject an array condition to filter by arbitrary column values!
$model = Post::findOne(Yii::$app->request->get('id'));
public static static|null findOne ( $condition )
$condition mixed

Primary key value or a set of column values

return yii\db\BaseActiveRecord|null

ActiveRecord instance matching the condition, or null if nothing matches.

                public static function findOne($condition)
{
    return static::findByCondition($condition)->one();
}

            
formName() public method

Defined in: yii\base\Model::formName()

Returns the form name that this model class should use.

The form name is mainly used by yii\widgets\ActiveForm to determine how to name the input fields for the attributes in a model. If the form name is "A" and an attribute name is "b", then the corresponding input name would be "A[b]". If the form name is an empty string, then the input name would be "b".

The purpose of the above naming schema is that for forms which contain multiple different models, the attributes of each model are grouped in sub-arrays of the POST-data and it is easier to differentiate between them.

By default, this method returns the model class name (without the namespace part) as the form name. You may override it when the model is used in different forms.

See also load().

public string formName ( )
return string

The form name of this model class.

throws yii\base\InvalidConfigException

when form is defined with anonymous class and formName() method is not overridden.

                public function formName()
{
    $reflector = new ReflectionClass($this);
    if (PHP_VERSION_ID >= 70000 && $reflector->isAnonymous()) {
        throw new InvalidConfigException('The "formName()" method should be explicitly defined for anonymous models');
    }
    return $reflector->getShortName();
}

            
generateAttributeLabel() public method

Defined in: yii\base\Model::generateAttributeLabel()

Generates a user friendly attribute label based on the give attribute name.

This is done by replacing underscores, dashes and dots with blanks and changing the first letter of each word to upper case. For example, 'department_name' or 'DepartmentName' will generate 'Department Name'.

public string generateAttributeLabel ( $name )
$name string

The column name

return string

The attribute label

                public function generateAttributeLabel($name)
{
    return Inflector::camel2words($name, true);
}

            
generateNgRestRelations() public method (available since version 2.0.0)

Defined in: luya\admin\ngrest\base\NgRestModel::generateNgRestRelations()

Generate an array with NgRestRelation objects

public array generateNgRestRelations ( )

                public function generateNgRestRelations()
{
    $relations = [];
    // generate relations
    foreach ($this->ngRestRelations() as $key => $item) {
        /** @var $item \luya\admin\ngrest\base\NgRestRelationInterface */
        if (!$item instanceof NgRestRelation) {
            if (!isset($item['class'])) {
                $item['class'] = 'luya\admin\ngrest\base\NgRestRelation';
            }
            $item = Yii::createObject($item);
        }
        $item->setModelClass(get_class($this)); // former: $item->setModelClass($this->className());
        $item->setArrayIndex($key);
        $relations[$key] = $item;
    }
    return $relations;
}

            
genericSearch() public method

Defined in: luya\admin\ngrest\base\NgRestModel::genericSearch()

The Query which is going to be performend to the concret implementation.

public yii\db\QueryInterface|yii\db\ActiveQueryInterface|array genericSearch ( $searchQuery )
$searchQuery string

An HTML encoded string to lookup the database table.

                public function genericSearch($searchQuery)
{
    return $this->ngRestFullQuerySearch($searchQuery)->select($this->genericSearchFields());
}

            
genericSearchFields() public method

Defined in: luya\admin\ngrest\base\NgRestModel::genericSearchFields()

The fields to lookup with the search query.

public array genericSearchFields ( )
return array

An array with all fields where should be looked up against the genericSearch query.

                public function genericSearchFields()
{
    $fields = [];
    foreach (static::getTableSchema()->columns as $name => $object) {
        if ($object->phpType == 'string' || $object->phpType == 'integer') {
            $fields[] = static::tableName() . '.' . $object->name;
        }
    }
    return $fields;
}

            
genericSearchHiddenFields() public method

Defined in: luya\admin\ngrest\base\NgRestModel::genericSearchHiddenFields()

An array with fields which will be hidden in the search output, but are available for the State Provider functions.

public array genericSearchHiddenFields ( )
return array

An array with fields which should be hide from the results, where value is the field name:

return [
    'hide', 'me', 'too',
];

                public function genericSearchHiddenFields()
{
    return [];
}

            
genericSearchStateProvider() public method

Defined in: luya\admin\ngrest\base\NgRestModel::genericSearchStateProvider()

The state provider is used to click on the items. Retuns an array with a configuration for the angular state provider. Example

return [
    'state' => 'custom.cmsedit',
    'params' => [
        'navId' => 'id'
    ]
];

The example above would look like this in the angular context

$state.go('custom.cmsedit', { navId : 1 });

All variable for the params are based on the generichSearchFields(), if a variable is defined in the generichSearchFields() method it can be used with % prefix in params value.

If genericSearchStateProvider() returns false the ability to click on the detail icon is disabled.

public array|boolean genericSearchStateProvider ( )
return array|boolean

Returns the state config or when not clickable returns false

                public function genericSearchStateProvider()
{
    return [
        'state' => 'default.route.detail',
        'params' => [
            'id' => 'id',
        ],
    ];
}

            
getActiveValidators() public method

Defined in: yii\base\Model::getActiveValidators()

Returns the validators applicable to the current $scenario.

public yii\validators\Validator[] getActiveValidators ( $attribute null )
$attribute string|null

The name of the attribute whose applicable validators should be returned. If this is null, the validators for ALL attributes in the model will be returned.

return yii\validators\Validator[]

The validators applicable to the current $scenario.

                public function getActiveValidators($attribute = null)
{
    $activeAttributes = $this->activeAttributes();
    if ($attribute !== null && !in_array($attribute, $activeAttributes, true)) {
        return [];
    }
    $scenario = $this->getScenario();
    $validators = [];
    foreach ($this->getValidators() as $validator) {
        if ($attribute === null) {
            $validatorAttributes = $validator->getValidationAttributes($activeAttributes);
            $attributeValid = !empty($validatorAttributes);
        } else {
            $attributeValid = in_array($attribute, $validator->getValidationAttributes($attribute), true);
        }
        if ($attributeValid && $validator->isActive($scenario)) {
            $validators[] = $validator;
        }
    }
    return $validators;
}

            
getAttribute() public method

Defined in: yii\db\BaseActiveRecord::getAttribute()

Returns the named attribute value.

If this record is the result of a query and the attribute is not loaded, null will be returned.

See also hasAttribute().

public mixed getAttribute ( $name )
$name string

The attribute name

return mixed

The attribute value. null if the attribute is not set or does not exist.

                public function getAttribute($name)
{
    return isset($this->_attributes[$name]) ? $this->_attributes[$name] : null;
}

            
getAttributeHint() public method (available since version 2.0.4)

Defined in: yii\db\BaseActiveRecord::getAttributeHint()

Returns the text hint for the specified attribute.

If the attribute looks like relatedModel.attribute, then the attribute will be received from the related model.

See also attributeHints().

public string getAttributeHint ( $attribute )
$attribute string

The attribute name

return string

The attribute hint

                public function getAttributeHint($attribute)
{
    $hints = $this->attributeHints();
    if (isset($hints[$attribute])) {
        return $hints[$attribute];
    } elseif (strpos($attribute, '.')) {
        $attributeParts = explode('.', $attribute);
        $neededAttribute = array_pop($attributeParts);
        $relatedModel = $this;
        foreach ($attributeParts as $relationName) {
            if ($relatedModel->isRelationPopulated($relationName) && $relatedModel->$relationName instanceof self) {
                $relatedModel = $relatedModel->$relationName;
            } else {
                try {
                    $relation = $relatedModel->getRelation($relationName);
                } catch (InvalidParamException $e) {
                    return '';
                }
                /* @var $modelClass ActiveRecordInterface */
                $modelClass = $relation->modelClass;
                $relatedModel = $modelClass::instance();
            }
        }
        $hints = $relatedModel->attributeHints();
        if (isset($hints[$neededAttribute])) {
            return $hints[$neededAttribute];
        }
    }
    return '';
}

            
getAttributeLabel() public method

Defined in: yii\db\BaseActiveRecord::getAttributeLabel()

Returns the text label for the specified attribute.

If the attribute looks like relatedModel.attribute, then the attribute will be received from the related model.

See also:

public string getAttributeLabel ( $attribute )
$attribute string

The attribute name

return string

The attribute label

                public function getAttributeLabel($attribute)
{
    $labels = $this->attributeLabels();
    if (isset($labels[$attribute])) {
        return $labels[$attribute];
    } elseif (strpos($attribute, '.')) {
        $attributeParts = explode('.', $attribute);
        $neededAttribute = array_pop($attributeParts);
        $relatedModel = $this;
        foreach ($attributeParts as $relationName) {
            if ($relatedModel->isRelationPopulated($relationName) && $relatedModel->$relationName instanceof self) {
                $relatedModel = $relatedModel->$relationName;
            } else {
                try {
                    $relation = $relatedModel->getRelation($relationName);
                } catch (InvalidParamException $e) {
                    return $this->generateAttributeLabel($attribute);
                }
                /* @var $modelClass ActiveRecordInterface */
                $modelClass = $relation->modelClass;
                $relatedModel = $modelClass::instance();
            }
        }
        $labels = $relatedModel->attributeLabels();
        if (isset($labels[$neededAttribute])) {
            return $labels[$neededAttribute];
        }
    }
    return $this->generateAttributeLabel($attribute);
}

            
getAttributes() public method

Defined in: yii\base\Model::getAttributes()

Returns attribute values.

public array getAttributes ( $names null, $except = [] )
$names array|null

List of attributes whose value needs to be returned. Defaults to null, meaning all attributes listed in attributes() will be returned. If it is an array, only the attributes in the array will be returned.

$except array

List of attributes whose value should NOT be returned.

return array

Attribute values (name => value).

                public function getAttributes($names = null, $except = [])
{
    $values = [];
    if ($names === null) {
        $names = $this->attributes();
    }
    foreach ($names as $name) {
        $values[$name] = $this->$name;
    }
    foreach ($except as $name) {
        unset($values[$name]);
    }
    return $values;
}

            
getBehavior() public method

Defined in: yii\base\Component::getBehavior()

Returns the named behavior object.

public yii\base\Behavior|null getBehavior ( $name )
$name string

The behavior name

return yii\base\Behavior|null

The behavior object, or null if the behavior does not exist

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() public method

Defined in: yii\base\Component::getBehaviors()

Returns all behaviors attached to this component.

public yii\base\Behavior[] getBehaviors ( )
return yii\base\Behavior[]

List of behaviors attached to this component

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getDb() public static method

Defined in: yii\db\ActiveRecord::getDb()

Returns the database connection used by this AR class.

By default, the "db" application component is used as the database connection. You may override this method if you want to use a different database connection.

public static yii\db\Connection getDb ( )
return yii\db\Connection

The database connection used by this AR class.

                public static function getDb()
{
    return Yii::$app->getDb();
}

            
getDirtyAttributes() public method

Defined in: yii\db\BaseActiveRecord::getDirtyAttributes()

Returns the attribute values that have been modified since they are loaded or saved most recently.

The comparison of new and old values is made for identical values using ===.

public array getDirtyAttributes ( $names null )
$names string[]|null

The names of the attributes whose values may be returned if they are changed recently. If null, attributes() will be used.

return array

The changed attribute values (name-value pairs)

                public function getDirtyAttributes($names = null)
{
    if ($names === null) {
        $names = $this->attributes();
    }
    $names = array_flip($names);
    $attributes = [];
    if ($this->_oldAttributes === null) {
        foreach ($this->_attributes as $name => $value) {
            if (isset($names[$name])) {
                $attributes[$name] = $value;
            }
        }
    } else {
        foreach ($this->_attributes as $name => $value) {
            if (isset($names[$name]) && (!array_key_exists($name, $this->_oldAttributes) || $this->isAttributeDirty($name, $value))) {
                $attributes[$name] = $value;
            }
        }
    }
    return $attributes;
}

            
getErrorSummary() public method (available since version 2.0.14)

Defined in: yii\base\Model::getErrorSummary()

Returns the errors for all attributes as a one-dimensional array.

See also:

public array getErrorSummary ( $showAllErrors )
$showAllErrors boolean

Boolean, if set to true every error message for each attribute will be shown otherwise only the first error message for each attribute will be shown.

return array

Errors for all attributes as a one-dimensional array. Empty array is returned if no error.

                public function getErrorSummary($showAllErrors)
{
    $lines = [];
    $errors = $showAllErrors ? $this->getErrors() : $this->getFirstErrors();
    foreach ($errors as $es) {
        $lines = array_merge($lines, (array)$es);
    }
    return $lines;
}

            
getErrors() public method

Defined in: yii\base\Model::getErrors()

Returns the errors for all attributes or a single attribute.

See also:

public array getErrors ( $attribute null )
$attribute string|null

Attribute name. Use null to retrieve errors for all attributes.

return array

Errors for all attributes or the specified attribute. Empty array is returned if no error. See getErrors() for detailed description. Note that when returning errors for all attributes, the result is a two-dimensional array, like the following:

[
    'username' => [
        'Username is required.',
        'Username must contain only word characters.',
    ],
    'email' => [
        'Email address is invalid.',
    ]
]

                public function getErrors($attribute = null)
{
    if ($attribute === null) {
        return $this->_errors === null ? [] : $this->_errors;
    }
    return isset($this->_errors[$attribute]) ? $this->_errors[$attribute] : [];
}

            
getFirstError() public method

Defined in: yii\base\Model::getFirstError()

Returns the first error of the specified attribute.

See also:

public string|null getFirstError ( $attribute )
$attribute string

Attribute name.

return string|null

The error message. Null is returned if no error.

                public function getFirstError($attribute)
{
    return isset($this->_errors[$attribute]) ? reset($this->_errors[$attribute]) : null;
}

            
getFirstErrors() public method

Defined in: yii\base\Model::getFirstErrors()

Returns the first error of every attribute in the model.

See also:

public array getFirstErrors ( )
return array

The first errors. The array keys are the attribute names, and the array values are the corresponding error messages. An empty array will be returned if there is no error.

                public function getFirstErrors()
{
    if (empty($this->_errors)) {
        return [];
    }
    $errors = [];
    foreach ($this->_errors as $name => $es) {
        if (!empty($es)) {
            $errors[$name] = reset($es);
        }
    }
    return $errors;
}

            
getI18nOldValue() public method (available since version 3.6.0)

Defined in: luya\admin\ngrest\base\NgRestModel::getI18nOldValue()

Get the old/original i18n value from the database.

See also https://github.com/luyadev/luya-module-admin/pull/567.

public string getI18nOldValue ( $attributeName )
$attributeName string
return string

The json value from either the old value setter array or the active record getOldAttribute() method.

                public function getI18nOldValue($attributeName)
{
    return array_key_exists($attributeName, $this->_i18nOldValues) ? $this->_i18nOldValues[$attributeName] : $this->getOldAttribute($attributeName);
}

            
getIsNewRecord() public method

Defined in: yii\db\BaseActiveRecord::getIsNewRecord()

Returns a value indicating whether the current record is new.

public boolean getIsNewRecord ( )
return boolean

Whether the record is new and should be inserted when calling save().

                public function getIsNewRecord()
{
    return $this->_oldAttributes === null;
}

            
getIsNgRestContext() public method

Defined in: luya\admin\ngrest\base\NgRestModel::getIsNgRestContext()

Whether the current model is in api context (REST SCENARIOS or CALL TYPE) context or not.

public boolean getIsNgRestContext ( )
return boolean

Whether the current model is in api context or not.

                public function getIsNgRestContext()
{
    if ($this->scenario == RestActiveController::SCENARIO_RESTCREATE
        || $this->scenario == RestActiveController::SCENARIO_RESTUPDATE
        || $this->getNgRestCallType()) {
        return true;
    }
    return false;
}

            
getIterator() public method

Defined in: yii\base\Model::getIterator()

Returns an iterator for traversing the attributes in the model.

This method is required by the interface IteratorAggregate.

public ArrayIterator getIterator ( )
return ArrayIterator

An iterator for traversing the items in the list.

                #[\ReturnTypeWillChange]
public function getIterator()
{
    $attributes = $this->getAttributes();
    return new ArrayIterator($attributes);
}

            
getLang() public method

public void getLang ( )

                public function getLang()
{
    return $this->hasOne(Lang::class, ['short_code' => 'default_lang']);
}

            
getNgRestCallType() public method

Defined in: luya\admin\ngrest\base\NgRestModel::getNgRestCallType()

Determine the current call type based on get params as they can change the output behavior to make the ngrest crud list view.

public boolean|string getNgRestCallType ( )

                public function getNgRestCallType()
{
    if ($this->_ngrestCallType === null) {
        $this->_ngrestCallType = (!Yii::$app instanceof \yii\web\Application) ? false : Yii::$app->request->get('ngrestCallType', false);
    }
    return $this->_ngrestCallType;
}

            
getNgRestConfig() public method

Defined in: luya\admin\ngrest\base\NgRestModel::getNgRestConfig()

Build and call the full config object if not build yet for this model.

public luya\admin\ngrest\Config getNgRestConfig ( )

                public function getNgRestConfig()
{
    if ($this->_config == null) {
        $config = new Config();
        // Generate config builder object
        $configBuilder = new ConfigBuilder(static::class);
        $this->ngRestConfig($configBuilder);
        $config->setConfig($configBuilder->getConfig());
        foreach ($this->i18n as $fieldName) {
            $config->appendFieldOption($fieldName, 'i18n', true);
        }
        // set model as context in order to lazy load data like (https://github.com/luyadev/luya-module-admin/pull/422)
        // - ngRestFilters
        // - getNgRestPrimaryKey
        // - ngRestActiveButtons
        // - ngRestRelations (trough: generateNgRestRelations())
        $config->setModel($this);
        // copy model data into config
        $config->setApiEndpoint(static::ngRestApiEndpoint());
        $config->setDefaultOrder($this->ngRestListOrder());
        $config->setAttributeGroups($this->ngRestAttributeGroups());
        $config->setGroupByField($this->ngRestGroupByField());
        $config->setGroupByExpanded($this->ngRestGroupByExpanded());
        $config->setTableName(static::tableName());
        $config->setAttributeLabels($this->attributeLabels());
        $config->setActiveSelections($this->ngRestActiveSelections());
        $config->onFinish();
        $this->_config = $config;
    }
    return $this->_config;
}

            
getNgRestPrimaryKey() public method

Defined in: luya\admin\ngrest\base\NgRestModel::getNgRestPrimaryKey()

Getter method for NgRest Primary Key.

public string getNgRestPrimaryKey ( )
throws yii\base\InvalidConfigException

                public function getNgRestPrimaryKey()
{
    if ($this->_ngRestPrimaryKey === null) {
        $keys = static::primaryKey();
        if (!isset($keys[0])) {
            throw new InvalidConfigException("The NgRestModel '".self::class."' requires at least one primaryKey in order to work.");
        }
        return (array) $keys;
    }
    return $this->_ngRestPrimaryKey;
}

            
getNgRestRelationByIndex() public method (available since version 2.0.0)

Defined in: luya\admin\ngrest\base\NgRestModel::getNgRestRelationByIndex()

Get the NgRest Relation definition object.

public luya\admin\ngrest\base\NgRestRelationInterface getNgRestRelationByIndex ( $index )
$index integer

                public function getNgRestRelationByIndex($index)
{
    $relations = $this->generateNgRestRelations();
    return $relations[$index] ?? false;
}

            
getNgRestScopeConfigOptions() public method (available since version 4.0.0)

Defined in: luya\admin\ngrest\base\NgRestModel::getNgRestScopeConfigOptions()

Return the scope definition third entry looking for button condition Currently support only buttonCondition

Example of returned array :

[
   "buttonCondition" => [
      ["update",  "{title}>1"],
      ["delete",  "{title}==2 && {firstname}=='bar'"]
   ]
]
public array getNgRestScopeConfigOptions ( $config )
$config
return array

ButtonCondition indexed array

                public function getNgRestScopeConfigOptions($config)
{
    $configOptions = [];
    foreach ($this->ngRestScopes() as $arrayConfig) {
        $scope = is_string($arrayConfig[0]) ? [$arrayConfig[0]] : $arrayConfig[0];
        $buttonConditionConfig =  $this->ngRestConfigButtonCondition($arrayConfig);
        if (!empty($buttonConditionConfig)) {
            foreach ($scope as $single_scope) {
                $configOptions['buttonCondition'][] = [$single_scope, $buttonConditionConfig];
            }
        }
    }
    return $configOptions;
}

            
getNgRestServices() public method

Defined in: luya\admin\ngrest\base\NgRestModel::getNgRestServices()

Triggers the event service event and returns the resolved data.

public mixed getNgRestServices ( )
return mixed

The service data.

                public function getNgRestServices()
{
    $this->trigger(self::EVENT_SERVICE_NGREST);
    return $this->ngRestServiceArray;
}

            
getOldAttribute() public method

Defined in: yii\db\BaseActiveRecord::getOldAttribute()

Returns the old value of the named attribute.

If this record is the result of a query and the attribute is not loaded, null will be returned.

See also hasAttribute().

public mixed getOldAttribute ( $name )
$name string

The attribute name

return mixed

The old attribute value. null if the attribute is not loaded before or does not exist.

                public function getOldAttribute($name)
{
    return isset($this->_oldAttributes[$name]) ? $this->_oldAttributes[$name] : null;
}

            
getOldAttributes() public method

Defined in: yii\db\BaseActiveRecord::getOldAttributes()

Returns the old attribute values.

public array getOldAttributes ( )
return array

The old attribute values (name-value pairs)

                public function getOldAttributes()
{
    return $this->_oldAttributes === null ? [] : $this->_oldAttributes;
}

            
getOldPrimaryKey() public method

Defined in: yii\db\BaseActiveRecord::getOldPrimaryKey()

Returns the old primary key value(s).

This refers to the primary key value that is populated into the record after executing a find method (e.g. find(), findOne()). The value remains unchanged even if the primary key attribute is manually assigned with a different value.

public mixed getOldPrimaryKey ( $asArray false )
$asArray boolean

Whether to return the primary key value as an array. If true, the return value will be an array with column name as key and column value as value. If this is false (default), a scalar value will be returned for non-composite primary key.

return mixed

The old primary key value. An array (column name => column value) is returned if the primary key is composite or $asArray is true. A string is returned otherwise (null will be returned if the key value is null).

throws yii\db\Exception

if the AR model does not have a primary key

                public function getOldPrimaryKey($asArray = false)
{
    $keys = static::primaryKey();
    if (empty($keys)) {
        throw new Exception(get_class($this) . ' does not have a primary key. You should either define a primary key for the corresponding table or override the primaryKey() method.');
    }
    if (!$asArray && count($keys) === 1) {
        return isset($this->_oldAttributes[$keys[0]]) ? $this->_oldAttributes[$keys[0]] : null;
    }
    $values = [];
    foreach ($keys as $name) {
        $values[$name] = isset($this->_oldAttributes[$name]) ? $this->_oldAttributes[$name] : null;
    }
    return $values;
}

            
getPrimaryKey() public method

Defined in: yii\db\BaseActiveRecord::getPrimaryKey()

Returns the primary key value(s).

public mixed getPrimaryKey ( $asArray false )
$asArray boolean

Whether to return the primary key value as an array. If true, the return value will be an array with column names as keys and column values as values. Note that for composite primary keys, an array will always be returned regardless of this parameter value.

return mixed

The primary key value. An array (column name => column value) is returned if the primary key is composite or $asArray is true. A string is returned otherwise (null will be returned if the key value is null).

                public function getPrimaryKey($asArray = false)
{
    $keys = static::primaryKey();
    if (!$asArray && count($keys) === 1) {
        return isset($this->_attributes[$keys[0]]) ? $this->_attributes[$keys[0]] : null;
    }
    $values = [];
    foreach ($keys as $name) {
        $values[$name] = isset($this->_attributes[$name]) ? $this->_attributes[$name] : null;
    }
    return $values;
}

            
getRelatedRecords() public method

Defined in: yii\db\BaseActiveRecord::getRelatedRecords()

Returns all populated related records.

See also getRelation().

public array getRelatedRecords ( )
return array

An array of related records indexed by relation names.

                public function getRelatedRecords()
{
    return $this->_related;
}

            
getRelation() public method

Defined in: yii\db\BaseActiveRecord::getRelation()

Returns the relation object with the specified name.

A relation is defined by a getter method which returns an yii\db\ActiveQueryInterface object. It can be declared in either the Active Record class itself or one of its behaviors.

public yii\db\ActiveQueryInterface|yii\db\ActiveQuery|null getRelation ( $name, $throwException true )
$name string

The relation name, e.g. orders for a relation defined via getOrders() method (case-sensitive).

$throwException boolean

Whether to throw exception if the relation does not exist.

return yii\db\ActiveQueryInterface|yii\db\ActiveQuery|null

The relational query object. If the relation does not exist and $throwException is false, null will be returned.

throws yii\base\InvalidArgumentException

if the named relation does not exist.

                public function getRelation($name, $throwException = true)
{
    $getter = 'get' . $name;
    try {
        // the relation could be defined in a behavior
        $relation = $this->$getter();
    } catch (UnknownMethodException $e) {
        if ($throwException) {
            throw new InvalidArgumentException(get_class($this) . ' has no relation named "' . $name . '".', 0, $e);
        }
        return null;
    }
    if (!$relation instanceof ActiveQueryInterface) {
        if ($throwException) {
            throw new InvalidArgumentException(get_class($this) . ' has no relation named "' . $name . '".');
        }
        return null;
    }
    if (method_exists($this, $getter)) {
        // relation name is case sensitive, trying to validate it when the relation is defined within this class
        $method = new \ReflectionMethod($this, $getter);
        $realName = lcfirst(substr($method->getName(), 3));
        if ($realName !== $name) {
            if ($throwException) {
                throw new InvalidArgumentException('Relation names are case sensitive. ' . get_class($this) . " has a relation named \"$realName\" instead of \"$name\".");
            }
            return null;
        }
    }
    return $relation;
}

            
getScenario() public method

Defined in: yii\base\Model::getScenario()

Returns the scenario that this model is used in.

Scenario affects how validation is performed and which attributes can be massively assigned.

public string getScenario ( )
return string

The scenario that this model is in. Defaults to SCENARIO_DEFAULT.

                public function getScenario()
{
    return $this->_scenario;
}

            
getTableSchema() public static method

Defined in: yii\db\ActiveRecord::getTableSchema()

Returns the schema information of the DB table associated with this AR class.

public static yii\db\TableSchema getTableSchema ( )
return yii\db\TableSchema

The schema information of the DB table associated with this AR class.

throws yii\base\InvalidConfigException

if the table for the AR class does not exist.

                public static function getTableSchema()
{
    $tableSchema = static::getDb()
        ->getSchema()
        ->getTableSchema(static::tableName());
    if ($tableSchema === null) {
        throw new InvalidConfigException('The table does not exist: ' . static::tableName());
    }
    return $tableSchema;
}

            
getTheme() public method

public void getTheme ( )

                public function getTheme()
{
    return $this->hasOne(Theme::class, ['id' => 'theme_id']);
}

            
getValidators() public method

Defined in: yii\base\Model::getValidators()

Returns all the validators declared in rules().

This method differs from getActiveValidators() in that the latter only returns the validators applicable to the current $scenario.

Because this method returns an ArrayObject object, you may manipulate it by inserting or removing validators (useful in model behaviors). For example,

$model->validators[] = $newValidator;
public ArrayObject|yii\validators\Validator[] getValidators ( )
return ArrayObject|yii\validators\Validator[]

All the validators declared in the model.

                public function getValidators()
{
    if ($this->_validators === null) {
        $this->_validators = $this->createValidators();
    }
    return $this->_validators;
}

            
handleNgRestActiveButton() public method (available since version 1.2.3)

Defined in: luya\admin\ngrest\base\NgRestModel::handleNgRestActiveButton()

Handle a given active button based on the hash (classname in sha1).

public array|boolean handleNgRestActiveButton ( $hash )
$hash string

The hash name, equals to the class name of the button

return array|boolean

Returns the button array response or false if not found.

                public function handleNgRestActiveButton($hash)
{
    foreach ($this->ngRestActiveButtons() as $item) {
        if (sha1($item['class']) == $hash) {
            $button = Yii::createObject($item);
            return $button->handle($this);
        }
    }
    return false;
}

            
hasAttribute() public method

Defined in: yii\db\BaseActiveRecord::hasAttribute()

Returns a value indicating whether the model has an attribute with the specified name.

public boolean hasAttribute ( $name )
$name string

The name of the attribute

return boolean

Whether the model has an attribute with the specified name.

                public function hasAttribute($name)
{
    return isset($this->_attributes[$name]) || in_array($name, $this->attributes(), true);
}

            
hasErrors() public method

Defined in: yii\base\Model::hasErrors()

Returns a value indicating whether there is any validation error.

public boolean hasErrors ( $attribute null )
$attribute string|null

Attribute name. Use null to check all attributes.

return boolean

Whether there is any error.

                public function hasErrors($attribute = null)
{
    return $attribute === null ? !empty($this->_errors) : isset($this->_errors[$attribute]);
}

            
hasEventHandlers() public method

Defined in: yii\base\Component::hasEventHandlers()

Returns a value indicating whether there is any handler attached to the named event.

public boolean hasEventHandlers ( $name )
$name string

The event name

return boolean

Whether there is any handler attached to the event.

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMany() public method
public yii\db\ActiveQuery hasMany ( $class, array $link )
$class
$link
return yii\db\ActiveQuery
hasMethod() public method

Defined in: yii\base\Component::hasMethod()

Returns a value indicating whether a method is defined.

A method is defined if:

  • the class has a method with the specified name
  • an attached behavior has a method with the given name (when $checkBehaviors is true).
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

The property name

$checkBehaviors boolean

Whether to treat behaviors' methods as methods of this component

return boolean

Whether the method is defined

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasOne() public method
public yii\db\ActiveQuery hasOne ( $class, array $link )
$class
$link
return yii\db\ActiveQuery
hasProperty() public method

Defined in: yii\base\Component::hasProperty()

Returns a value indicating whether a property is defined for this component.

A property is defined if:

  • the class has a getter or setter method associated with the specified name (in this case, property name is case-insensitive);
  • the class has a member variable with the specified name (when $checkVars is true);
  • an attached behavior has a property of the given name (when $checkBehaviors is true).

See also:

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

The property name

$checkVars boolean

Whether to treat member variables as properties

$checkBehaviors boolean

Whether to treat behaviors' properties as properties of this component

return boolean

Whether the property is defined

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
i18nAttributeFallbackValue() public method (available since version 2.1.0)

Defined in: luya\admin\ngrest\base\NgRestModel::i18nAttributeFallbackValue()

Returns the value for an i18n field before it was casted to the output for the current active language if empty.

The main purpose of this method is to retrieve any value from this attribute event when the current value is empty.

The value is determined by:

  1. Is the i18n casted value empty continue or return value.
  2. If preffered language is given and a none empty value exists for the preferred language return the value or continue.
  3. Foreach the array and return the first value which is not empty.
public string|null i18nAttributeFallbackValue ( $attributeName, $preferredLanguage null )
$attributeName string

The attribute to return the fallback.

$preferredLanguage string

The prefered language short code name which should be checked whether it has a value or not.

                public function i18nAttributeFallbackValue($attributeName, $preferredLanguage = null)
{
    $value = $this->{$attributeName};
    if (empty($value) && $this->isI18n($attributeName)) {
        // get the decoded value from old attribute value.
        $array = I18n::decode($this->getI18nOldValue($attributeName));
        if ($preferredLanguage && isset($array[$preferredLanguage]) && !empty($array[$preferredLanguage])) {
            return $this->runI18nContextOnFindPlugin($attributeName, $array[$preferredLanguage]);
        }
        foreach ($array as $value) {
            if (!empty($value)) {
                return $this->runI18nContextOnFindPlugin($attributeName, $value);
            }
        }
    }
    return $value;
}

            
i18nAttributeLanguageValue() public method (available since version 3.5.2)

Defined in: luya\admin\ngrest\base\NgRestModel::i18nAttributeLanguageValue()

Returns the value of an i18n attribute for the given language.

This method is commonly used in order to retrieve a value for a given language even though the application language is different.

public mixed|null i18nAttributeLanguageValue ( $attributeName, $language, $raw false )
$attributeName string

The name of the attribute to find the value.

$language string

The language short code.

$raw boolean

If enabled the value will not be parsed through the assigned ngRestAttribute plugin and just returns the raw value from the database.

return mixed|null

Returns the value, either raw or converted trough the assigned plugin. If the language is not found (maybe not set already) null is returned.

                public function i18nAttributeLanguageValue($attributeName, $language, $raw = false)
{
    // get the decoded value from old attribute value.
    $array = I18n::decode($this->getI18nOldValue($attributeName));
    // if language is available in the array
    if (isset($array[$language])) {
        // return the raw value from the database
        if ($raw) {
            return $array[$language];
        }
        return $this->runI18nContextOnFindPlugin($attributeName, $array[$language]);
    }
    return null;
}

            
i18nAttributeValue() public method (available since version 2.0.0)

Defined in: luya\admin\ngrest\base\NgRestModel::i18nAttributeValue()

Checks whether given attribute is in the list of i18n fields, if so the field value will be decoded and the value for the current active language is returned.

If the attribute is not in the list of attributes values, the value of the attribute is returned. So its also safe to use this function when dealing with none i18n fields.

public string i18nAttributeValue ( $attributeName )
$attributeName string

The attribute of the ActiveRecord to check and return its decoded i18n value.

return string

A json decoded value from an i18n field.

                public function i18nAttributeValue($attributeName)
{
    $value = $this->{$attributeName};
    if ($this->isI18n($attributeName) && Json::isJson($value)) {
        return I18n::decodeFindActive($value);
    }
    return $this->{$attributeName};
}

            
i18nAttributesValue() public method (available since version 2.0.0)

Defined in: luya\admin\ngrest\base\NgRestModel::i18nAttributesValue()

Returns the decoded i18n value for a set of attributes.

public \luya\admin\ngrest\base\An i18nAttributesValue ( array $attributes )
$attributes array

An array with attributes to return its value

return \luya\admin\ngrest\base\An

Array with where the key is the attribute name and value is the decoded i18n value

                public function i18nAttributesValue(array $attributes)
{
    $values = [];
    foreach ($attributes as $attribute) {
        $values[$attribute] = $this->i18nAttributeValue($attribute);
    }
    return $values;
}

            
init() public method

public void init ( )

                public function init()
{
    parent::init();
    $this->on(self::EVENT_AFTER_INSERT, [$this, 'eventAfterInsert']);
    $this->on(self::EVENT_BEFORE_DELETE, [$this, 'eventBeforeDelete']);
    $this->on(self::EVENT_AFTER_DELETE, [$this, 'eventAfterDelete']);
}

            
insert() public method

Defined in: yii\db\ActiveRecord::insert()

Inserts a row into the associated database table using the attribute values of this record.

This method performs the following steps in order:

  1. call beforeValidate() when $runValidation is true. If beforeValidate() returns false, the rest of the steps will be skipped;
  2. call afterValidate() when $runValidation is true. If validation failed, the rest of the steps will be skipped;
  3. call beforeSave(). If beforeSave() returns false, the rest of the steps will be skipped;
  4. insert the record into database. If this fails, it will skip the rest of the steps;
  5. call afterSave();

In the above step 1, 2, 3 and 5, events EVENT_BEFORE_VALIDATE, EVENT_AFTER_VALIDATE, EVENT_BEFORE_INSERT, and EVENT_AFTER_INSERT will be raised by the corresponding methods.

Only the changed attribute values will be inserted into database.

If the table's primary key is auto-incremental and is null during insertion, it will be populated with the actual value after insertion.

For example, to insert a customer record:

$customer = new Customer;
$customer->name = $name;
$customer->email = $email;
$customer->insert();
public boolean insert ( $runValidation true, $attributes null )
$runValidation boolean

Whether to perform validation (calling validate()) before saving the record. Defaults to true. If the validation fails, the record will not be saved to the database and this method will return false.

$attributes array|null

List of attributes that need to be saved. Defaults to null, meaning all attributes that are loaded from DB will be saved.

return boolean

Whether the attributes are valid and the record is inserted successfully.

throws Throwable

in case insert failed.

                public function insert($runValidation = true, $attributes = null)
{
    if ($runValidation && !$this->validate($attributes)) {
        Yii::info('Model not inserted due to validation error.', __METHOD__);
        return false;
    }
    if (!$this->isTransactional(self::OP_INSERT)) {
        return $this->insertInternal($attributes);
    }
    $transaction = static::getDb()->beginTransaction();
    try {
        $result = $this->insertInternal($attributes);
        if ($result === false) {
            $transaction->rollBack();
        } else {
            $transaction->commit();
        }
        return $result;
    } catch (\Exception $e) {
        $transaction->rollBack();
        throw $e;
    } catch (\Throwable $e) {
        $transaction->rollBack();
        throw $e;
    }
}

            
insertInternal() protected method

Defined in: yii\db\ActiveRecord::insertInternal()

Inserts an ActiveRecord into DB without considering transaction.

protected boolean insertInternal ( $attributes null )
$attributes array|null

List of attributes that need to be saved. Defaults to null, meaning all attributes that are loaded from DB will be saved.

return boolean

Whether the record is inserted successfully.

                protected function insertInternal($attributes = null)
{
    if (!$this->beforeSave(true)) {
        return false;
    }
    $values = $this->getDirtyAttributes($attributes);
    if (($primaryKeys = static::getDb()->schema->insert(static::tableName(), $values)) === false) {
        return false;
    }
    foreach ($primaryKeys as $name => $value) {
        $id = static::getTableSchema()->columns[$name]->phpTypecast($value);
        $this->setAttribute($name, $id);
        $values[$name] = $id;
    }
    $changedAttributes = array_fill_keys(array_keys($values), null);
    $this->setOldAttributes($values);
    $this->afterSave(true, $changedAttributes);
    return true;
}

            
instance() public static method

Defined in: yii\base\StaticInstanceTrait::instance()

Returns static class instance, which can be used to obtain meta information.

public static static instance ( $refresh false )
$refresh boolean

Whether to re-create static instance even, if it is already cached.

return luya\cms\models\Website

Class instance.

                public static function instance($refresh = false)
{
    $className = get_called_class();
    if ($refresh || !isset(self::$_instances[$className])) {
        self::$_instances[$className] = Yii::createObject($className);
    }
    return self::$_instances[$className];
}

            
instantiate() public static method

Defined in: yii\db\BaseActiveRecord::instantiate()

Creates an active record instance.

This method is called together with populateRecord() by yii\db\ActiveQuery. It is not meant to be used for creating new records directly.

You may override this method if the instance being created depends on the row data to be populated into the record. For example, by creating a record based on the value of a column, you may implement the so-called single-table inheritance mapping.

public static static instantiate ( $row )
$row array

Row data to be populated into the record.

return yii\db\BaseActiveRecord

The newly created active record

                public static function instantiate($row)
{
    return new static();
}

            
internalAndWhere() public static method

Defined in: luya\admin\traits\SoftDeleteTrait::internalAndWhere()

This method will be used to performe the where querys of ngrestFind() and find() of the ActiveRecord.

public static array internalAndWhere ( )
return array

Returns an array where the key is the field and value the correspoinding value for there where statments.

                public static function internalAndWhere()
{
    $query = [];
    foreach (static::fieldStateDescriber() as $field => $value) {
        $query[static::tableName().'.'.$field] = is_array($value) ? $value[1] : !$value;
    }
    return $query;
}

            
isAttributeActive() public method

Defined in: yii\base\Model::isAttributeActive()

Returns a value indicating whether the attribute is active in the current scenario.

See also activeAttributes().

public boolean isAttributeActive ( $attribute )
$attribute string

Attribute name

return boolean

Whether the attribute is active in the current scenario

                public function isAttributeActive($attribute)
{
    return in_array($attribute, $this->activeAttributes(), true);
}

            
isAttributeChanged() public method

Defined in: yii\db\BaseActiveRecord::isAttributeChanged()

Returns a value indicating whether the named attribute has been changed.

public boolean isAttributeChanged ( $name, $identical true )
$name string

The name of the attribute.

$identical boolean

Whether the comparison of new and old value is made for identical values using ===, defaults to true. Otherwise == is used for comparison. This parameter is available since version 2.0.4.

return boolean

Whether the attribute has been changed

                public function isAttributeChanged($name, $identical = true)
{
    if (isset($this->_attributes[$name], $this->_oldAttributes[$name])) {
        if ($identical) {
            return $this->_attributes[$name] !== $this->_oldAttributes[$name];
        }
        return $this->_attributes[$name] != $this->_oldAttributes[$name];
    }
    return isset($this->_attributes[$name]) || isset($this->_oldAttributes[$name]);
}

            
isAttributeRequired() public method

Defined in: yii\base\Model::isAttributeRequired()

Returns a value indicating whether the attribute is required.

This is determined by checking if the attribute is associated with a required validation rule in the current $scenario.

Note that when the validator has a conditional validation applied using $when this method will return false regardless of the when condition because it may be called be before the model is loaded with data.

public boolean isAttributeRequired ( $attribute )
$attribute string

Attribute name

return boolean

Whether the attribute is required

                public function isAttributeRequired($attribute)
{
    foreach ($this->getActiveValidators($attribute) as $validator) {
        if ($validator instanceof RequiredValidator && $validator->when === null) {
            return true;
        }
    }
    return false;
}

            
isAttributeSafe() public method

Defined in: yii\base\Model::isAttributeSafe()

Returns a value indicating whether the attribute is safe for massive assignments.

See also safeAttributes().

public boolean isAttributeSafe ( $attribute )
$attribute string

Attribute name

return boolean

Whether the attribute is safe for massive assignments

                public function isAttributeSafe($attribute)
{
    return in_array($attribute, $this->safeAttributes(), true);
}

            
isI18n() public method

Defined in: luya\admin\ngrest\base\NgRestModel::isI18n()

Whether a field is i18n or not.

public boolean isI18n ( $attributeName )
$attributeName string

The name of the field which is

                public function isI18n($attributeName)
{
    return in_array($attributeName, $this->i18n);
}

            
isPrimaryKey() public static method

Defined in: yii\db\BaseActiveRecord::isPrimaryKey()

Returns a value indicating whether the given set of attributes represents the primary key for this model.

public static boolean isPrimaryKey ( $keys )
$keys array

The set of attributes to check

return boolean

Whether the given set of attributes represents the primary key for this model

                public static function isPrimaryKey($keys)
{
    $pks = static::primaryKey();
    if (count($keys) === count($pks)) {
        return count(array_intersect($keys, $pks)) === count($pks);
    }
    return false;
}

            
isRelationPopulated() public method

Defined in: yii\db\BaseActiveRecord::isRelationPopulated()

Check whether the named relation has been populated with records.

See also getRelation().

public boolean isRelationPopulated ( $name )
$name string

The relation name, e.g. orders for a relation defined via getOrders() method (case-sensitive).

return boolean

Whether relation has been populated with records.

                public function isRelationPopulated($name)
{
    return array_key_exists($name, $this->_related);
}

            
isTransactional() public method

Defined in: yii\db\ActiveRecord::isTransactional()

Returns a value indicating whether the specified operation is transactional in the current $scenario.

public boolean isTransactional ( $operation )
$operation integer

The operation to check. Possible values are OP_INSERT, OP_UPDATE and OP_DELETE.

return boolean

Whether the specified operation is transactional in the current $scenario.

                public function isTransactional($operation)
{
    $scenario = $this->getScenario();
    $transactions = $this->transactions();
    return isset($transactions[$scenario]) && ($transactions[$scenario] & $operation);
}

            
link() public method

Defined in: yii\db\BaseActiveRecord::link()

Establishes the relationship between two models.

The relationship is established by setting the foreign key value(s) in one model to be the corresponding primary key value(s) in the other model. The model with the foreign key will be saved into database without performing validation and without events/behaviors.

If the relationship involves a junction table, a new row will be inserted into the junction table which contains the primary key values from both models.

Note that this method requires that the primary key value is not null.

public void link ( $name, $model, $extraColumns = [] )
$name string

The case sensitive name of the relationship, e.g. orders for a relation defined via getOrders() method.

$model yii\db\ActiveRecordInterface

The model to be linked with the current one.

$extraColumns array

Additional column values to be saved into the junction table. This parameter is only meaningful for a relationship involving a junction table (i.e., a relation set with yii\db\ActiveRelationTrait::via() or yii\db\ActiveQuery::viaTable().)

throws yii\base\InvalidCallException

if the method is unable to link two models.

load() public method

Defined in: yii\base\Model::load()

Populates the model with input data.

This method provides a convenient shortcut for:

if (isset($_POST['FormName'])) {
    $model->attributes = $_POST['FormName'];
    if ($model->save()) {
        // handle success
    }
}

which, with load() can be written as:

if ($model->load($_POST) && $model->save()) {
    // handle success
}

load() gets the 'FormName' from the model's formName() method (which you may override), unless the $formName parameter is given. If the form name is empty, load() populates the model with the whole of $data, instead of $data['FormName'].

Note, that the data being populated is subject to the safety check by setAttributes().

public boolean load ( $data, $formName null )
$data array

The data array to load, typically $_POST or $_GET.

$formName string|null

The form name to use to load the data into the model, empty string when form not use. If not set, formName() is used.

return boolean

Whether load() found the expected form in $data.

                public function load($data, $formName = null)
{
    $scope = $formName === null ? $this->formName() : $formName;
    if ($scope === '' && !empty($data)) {
        $this->setAttributes($data);
        return true;
    } elseif (isset($data[$scope])) {
        $this->setAttributes($data[$scope]);
        return true;
    }
    return false;
}

            
loadDefaultValues() public method

Defined in: yii\db\ActiveRecord::loadDefaultValues()

Loads default values from database table schema.

You may call this method to load default values after creating a new instance:

// class Customer extends \yii\db\ActiveRecord
$customer = new Customer();
$customer->loadDefaultValues();
public $this loadDefaultValues ( $skipIfSet true )
$skipIfSet boolean

Whether existing value should be preserved. This will only set defaults for attributes that are null.

return $this

The model instance itself.

                public function loadDefaultValues($skipIfSet = true)
{
    $columns = static::getTableSchema()->columns;
    foreach ($this->attributes() as $name) {
        if (isset($columns[$name])) {
            $defaultValue = $columns[$name]->defaultValue;
            if ($defaultValue !== null && (!$skipIfSet || $this->getAttribute($name) === null)) {
                $this->setAttribute($name, $defaultValue);
            }
        }
    }
    return $this;
}

            
loadMultiple() public static method

Defined in: yii\base\Model::loadMultiple()

Populates a set of models with the data from end user.

This method is mainly used to collect tabular data input. The data to be loaded for each model is $data[formName][index], where formName refers to the value of formName(), and index the index of the model in the $models array. If formName() is empty, $data[index] will be used to populate each model. The data being populated to each model is subject to the safety check by setAttributes().

public static boolean loadMultiple ( $models, $data, $formName null )
$models array

The models to be populated. Note that all models should have the same class.

$data array

The data array. This is usually $_POST or $_GET, but can also be any valid array supplied by end user.

$formName string|null

The form name to be used for loading the data into the models. If not set, it will use the formName() value of the first model in $models. This parameter is available since version 2.0.1.

return boolean

Whether at least one of the models is successfully populated.

                public static function loadMultiple($models, $data, $formName = null)
{
    if ($formName === null) {
        /* @var $first Model|false */
        $first = reset($models);
        if ($first === false) {
            return false;
        }
        $formName = $first->formName();
    }
    $success = false;
    foreach ($models as $i => $model) {
        /* @var $model Model */
        if ($formName == '') {
            if (!empty($data[$i]) && $model->load($data[$i], '')) {
                $success = true;
            }
        } elseif (!empty($data[$formName][$i]) && $model->load($data[$formName][$i], '')) {
            $success = true;
        }
    }
    return $success;
}

            
markAttributeDirty() public method

Defined in: yii\db\BaseActiveRecord::markAttributeDirty()

Marks an attribute dirty.

This method may be called to force updating a record when calling update(), even if there is no change being made to the record.

public void markAttributeDirty ( $name )
$name string

The attribute name

                public function markAttributeDirty($name)
{
    unset($this->_oldAttributes[$name]);
}

            
ngRestActiveButtons() public method (available since version 1.2.3)

Define Active Buttons.

An array with active button elements:

public function ngRestActiveButton()
{
    return [
         ['class' => 'luya\admin\activebuttons\MyActiveButton', 'property' => 'value'],
    ];
}
public array ngRestActiveButtons ( )

                public function ngRestActiveButtons()
{
    return [
        [
            'class' => 'luya\admin\buttons\ToggleStatusActiveButton',
            'attribute' => 'is_default',
            'uniqueStatus' => true,
            'modelNameAttribute' => 'name',
            'label' => 'Set default',
        ],
    ];
}

            
ngRestActiveSelections() public method (available since version 4.0.0)

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestActiveSelections()

Define Active Selections.

Active Selections are buttons which are visible in the CRUD list and can interact with the selected items (through a checkbox).

Active Selections can be either defined inline or as instance of {{luya\admin\ngrest\base\ActiveSelection}}. There are also predefined Selections Available.

public function ngRestActiveSelections()
{
    return [
        [
            'label' => 'Archive Rows',
            'action' => function(array $items, \luya\admin\ngrest\base\ActiveSelection $context) {
                foreach ($items as $item) {
                    // do something with item. Each item is an ActiveRecord of the method implementation itself.
                }

                // if the selection interacts with the items, it might be necessary to reload the CRUD.
                $context->sendReloadEvent();

                return $context->sendSuccess('Done!');
            }
        ],
        [
            'class' => 'luya\admin\selections\DeleteActiveSelection'
        ]
    ];
}

Keep in mind that $this does not result in a certain Active Record context as there is no model assigned when ngRestActiveSelections() is called.

When generating multiple buttons f.e. from another model its recommend to use array notation, otherwise its possible to create an infinite circular reference.

 public function ngRestActiveSelections()
{
    $selections = [];
    foreach (MyModel::find()->asArray()->all() as $myModel) {
        $selections[] = [
            'label' => $myModel['title'],
            'action' => function(array $items, \luya\admin\ngrest\base\ActiveSelection $context) use ($myModel) {
                // accessing $myModel
            }
        ];
    }

    return $selections;
}
public array ngRestActiveSelections ( )
return array

An array with definitions which eithe requires action and label or using classed based action defined via class.

                public function ngRestActiveSelections()
{
    return [];
}

            
ngRestActiveWindows() public method

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestActiveWindows()

Define Active Window configurations.

public function ngRestActiveWindows()
{
    return [
        ['class' => 'luya\admin\aws\TagActiveWindow', 'label' => 'Tags Label'],
        ['class' => luya\admin\aws\ChangePasswordActiveWindow::class, 'label' => 'Change your Password'],
    ];
}
public void ngRestActiveWindows ( )

                public function ngRestActiveWindows()
{
    return [];
}

            
ngRestApiEndpoint() public static method

public static void ngRestApiEndpoint ( )

                public static function ngRestApiEndpoint()
{
    return 'api-cms-website';
}

            
ngRestAttributeGroups() public method

public void ngRestAttributeGroups ( )

                public function ngRestAttributeGroups()
{
    return [
        [['group_ids', 'user_ids'], Module::t('model_website_access_restrict'), 'collapsed' => false],
    ];
}

            
ngRestAttributeTypes() public method (available since version 1.0.0-RC1)

Define the field types for ngrest, to use ngRestConfigDefine().

The definition can contain properties, but does not have to.

public function ngRestAttributeTypes()
{
    return [
        'firstname' => 'text',
        'lastname' => 'text',
        'description' => 'textarea',
        'position' => ['selectArray', [0 => 'Mr', 1 => 'Mrs']],
        'image_id' => 'image',
        'image_id_2' => ['image'], // is equal to `image_id` field.
        'image_id_with_no_filter' => ['image', true],
    ];
}
public array ngRestAttributeTypes ( )

                public function ngRestAttributeTypes()
{
    return [
        'name' => 'text',
        'host' => 'slug',
        'aliases' => 'slug',
        'is_active' => ['toggleStatus', 'initValue' => 0, 'interactive' => true],
        'is_default' => ['toggleStatus', 'initValue' => 0, 'interactive' => false],
        'redirect_to_host' => ['toggleStatus', 'initValue' => 0, 'interactive' => true],
        'theme_id' => [
            'class' => SelectRelationActiveQuery::class,
            'query' => $this->getTheme(),
            'relation' => 'theme',
            'emptyListValue' => '(' . Module::t('model_website_use_default_theme') . ')',
            'labelField' => ['base_path']
        ],
        'default_lang' => [
            'class' => SelectRelationActiveQuery::class,
            'query' => $this->getLang(),
            'relation' => 'lang',
            'labelField' => ['name']
        ],
        'group_ids' => [
            'class' => CheckboxList::class,
            'alias' => Module::t('model_website_group_ids_label'),
            'data' => fn () => ArrayHelper::merge(
                [0 => Module::t('model_website_all')],
                Group::find()
                    ->indexBy('id')
                    ->select('name')
                    ->column()
            ),
        ],
        'user_ids' => [
            'class' => CheckboxList::class,
            'alias' => Module::t('model_website_user_ids_label'),
            'data' => fn () => ArrayHelper::merge(
                [0 => Module::t('model_website_all')],
                ArrayHelper::map(
                    User::find()
                        ->indexBy('id')
                        ->select(['id', 'firstname',  'lastname'])
                        ->all(),
                    'id',
                    fn ($user) => $user->firstname . ' ' . $user->lastname
                )
            ),
        ],
    ];
}

            
ngRestByPrimaryKeyOne() public static method (available since version 2.0.1)

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestByPrimaryKeyOne()

The a single object from a primary key definition.

public static luya\admin\ngrest\base\NgRestActiveQuery ngRestByPrimaryKeyOne ( $condition )
$condition string

The condition for primary keys like 1,23 or 1.

                public static function ngRestByPrimaryKeyOne($condition)
{
    return static::ngRestFind()->byPrimaryKey($condition)->one();
}

            
ngRestConfig() public method

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestConfig()

Defines the base inline configuration for the current Model.

public void ngRestConfig ( $config )
$config luya\admin\ngrest\ConfigBuilder

ConfigBuilder Object

                public function ngRestConfig($config)
{
    foreach ($this->ngRestScopes() as $arrayConfig) {
        if (!isset($arrayConfig[0]) && !isset($arrayConfig[1])) {
            throw new InvalidConfigException("Invalid ngRestScope definition. Definition must contain an array with two elements: `['create', []]`");
        }
        $scope = $arrayConfig[0];
        $fields = $arrayConfig[1];
        if ($scope == 'delete' || (is_array($scope) && in_array('delete', $scope))) {
            $config->delete = $fields;
        } else {
            $this->ngRestConfigDefine($config, $scope, $fields);
        }
    }
    foreach ($this->ngRestActiveWindows() as $windowConfig) {
        $config->aw->load($windowConfig);
    }
    // get the scope based config options if no ngRestConfigOptions() are defined
    $configOptions = empty($this->ngRestConfigOptions()) ? $this->getNgRestScopeConfigOptions($config) : $this->ngRestConfigOptions();
    if (!empty($configOptions)) {
        $config->options = $configOptions;
    }
}

            
ngRestConfigDefine() public method (available since version 1.0.0)

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestConfigDefine()

Inject data from the model into the config, usage exmple in ngRestConfig method context:

public function ngRestConfig($config)
{
    // ...
    $this->ngRestConfigDefine($config, 'list', ['firstname', 'lastname', 'image_id']);
    $this->ngRestConfigDefine($config, 'create', ['firstname', 'lastname', 'description', 'position', 'image_id']);
    $this->ngRestConfigDefine($config, 'update', ['firstname', 'lastname', 'description', 'position', 'image_id']);
    // ....
    return $config;
}

You can also use an array definition to handle booth types at the same time

public function ngRestConfig($config)
{
    // ...
    $this->ngRestConfigDefine($config, ['create', 'update'], ['firstname', 'lastname', 'description', 'position', 'image_id']);
    // ....
    return $config;
}
public void ngRestConfigDefine ( luya\admin\ngrest\ConfigBuilder $config, $assignedType, array $fields )
$config luya\admin\ngrest\ConfigBuilder

The config which the definition should be append

$assignedType string|array

This can be a string with a type or an array with multiple types

$fields array

An array with fields assign to types type based on the an ngRestAttributeTypes definition.

throws yii\base\InvalidConfigException

                public function ngRestConfigDefine(ConfigBuilder $config, $assignedType, array $fields)
{
    $types = $this->ngRestAttributeTypes();
    $extraTypes = $this->ngRestExtraAttributeTypes();
    $scenarios = $this->scenarios();
    $assignedType = (array) $assignedType;
    foreach ($assignedType as $type) {
        $scenario = false;
        $scenarioFields = [];
        if ($type == 'create' || $type == 'update') {
            $scenario = 'rest'.$type;
            if (!isset($scenarios[$scenario])) {
                throw new InvalidConfigException("The scenario '$scenario' does not exists in your scenarios list, have you forgot to defined the '$scenario' in the scenarios() method?");
            } else {
                $scenarioFields = $scenarios[$scenario];
            }
        }
        foreach ($fields as $field) {
            if (!isset($types[$field]) && !isset($extraTypes[$field])) {
                throw new InvalidConfigException("The ngrest attribue '$field' does not exists in ngRestAttributeTypes() nor in ngRestExtraAttributeTypes() method.");
            }
            if ($scenario && !in_array($field, $scenarioFields)) {
                throw new InvalidConfigException("The field '$field' does not exists in the scenario '$scenario'. You have to define them in the scenarios() method.");
            }
            if (isset($extraTypes[$field])) {
                $typeField = 'extraField';
                $definition = $extraTypes[$field];
            } else {
                $typeField = 'field';
                $definition = $types[$field];
            }
            $args = [];
            if (is_array($definition)) {
                if (array_key_exists('class', $definition)) {
                    $method = $definition['class'];
                    unset($definition['class']);
                    $args = $definition;
                } else {
                    $method = $config->prepandAdminPlugin($definition[0]);
                    $args = array_slice($definition, 1);
                }
            } else {
                $method = $config->prepandAdminPlugin($definition);
            }
            $config->$type->$typeField($field, $this->getAttributeLabel($field))->addPlugin($method, $args);
        }
    }
}

            
ngRestConfigOptions() public method

public void ngRestConfigOptions ( )

                public function ngRestConfigOptions()
{
    return [
        'saveCallback' => "['ServiceMenuData', function(ServiceMenuData) { ServiceMenuData.load(true); }]",
    ];
}

            
ngRestExport() public method (available since version 3.9.0)

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestExport()

Format the values for export generator.

since 4.3 the ngRestExport() takes precendence regarding what attributes can be exported and how they are sorted! This means that when ngRestExport() is used, only the given fields will be available to export and the will be exported in order they are defined in the array.

When exporting data, it might be convient to format certain values, by default the {{luya\components\Formatter}} will be used. Its also possible to provide a closure function to interact with the model. When handling large amount of data to export, this might make problems because it will generate a model for each row. Therefore an empty array response will improve performance because {{ngRestExport()}} will be ignored.

public function ngRestExport()
{
    return [
        'created_at' => 'datetime',
        'comment' => 'ntext',
        'category_id' => function($model) {
            return $model->category->title;
        }
    ];
}

When using a relation call $model->category->title it might usefull to eager load this relation, therefore take a look at {{luya\admin\ngrest\base\Api::withRelations()}}. Therefore the withRelations() can be configured in the api controller of the given NgRest model:

public function withRelations()
{
    return [
         'export' => ['category'],
    ];
}
public array ngRestExport ( )
return array

An array where the key is the attribute and value is either the formatter to use or a closure where the first param is the model itself. Only the given attributes will be available in the export and are ordered in the list they are defined in the array.

                public function ngRestExport()
{
    return [];
}

            
ngRestExtraAttributeTypes() public method (available since version 1.0.0-RC2)

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestExtraAttributeTypes()

Same as ngRestAttributeTypes() but used for extraField instead of field.

See also ngRestAttributeTypes().

public array ngRestExtraAttributeTypes ( )

                public function ngRestExtraAttributeTypes()
{
    return [];
}

            
ngRestFilters() public method (available since version 1.0.0)

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestFilters()

Define an array with filters you can select from the CRUD list.

return [
    'deleted' => self::ngRestFind()->andWhere(['is_deleted' => 0]),
    'year2016' => self::ngRestFind()->andWhere(['between', 'date', 2015, 2016]),
];

Keep in mind to use andWhere() otherwise an existing where() condition could be overriden.

public array ngRestFilters ( )
return array

Return an array where key is the name and value is the ngRestFind() condition for the filters.

                public function ngRestFilters()
{
    return [];
}

            
ngRestFind() public static method

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestFind()

The NgRestFind is used when performing the crud list index overivew. You can override this method in order to hide data from the ngRestFind command which populates all data from the database.

An example for hidding deleted news posts from the crud list:

public static function ngRestFind()
{
    return parent::ngRestFind()->where(['is_deleted' => 0]);
}

This method will taken for all internal NOT API USER related calls. So assuming an API user makes request to the APi it will use find() instead of ngRestFind(). If a logged in user will make a request to an API it will take ngRestFind().

Also this methid is used for the admin scheduler, see {{luya\admin\models\Scheduler::triggerJob()}}.

public static luya\admin\ngrest\base\NgRestActiveQuery ngRestFind ( )

                public static function ngRestFind()
{
    return new NgRestActiveQuery(static::class);
}

            
ngRestFullQuerySearch() public method

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestFullQuerySearch()

Search trough the whole table as ajax fallback when pagination is enabled.

This method is used when the angular crud view switches to a pages view and a search term is entered into the query field. By default it will also take the fields from {{genericSearchFields()}}.

When you have relations to lookup you can extend the parent implementation, for example:

public function ngRestFullQuerySearch($query)
{
return parent::ngRestFullQuerySearch($query)
	->joinWith(['production'])
	->orFilterWhere(['like', 'title', $query]);
}
public yii\db\ActiveQuery ngRestFullQuerySearch ( $query )
$query string

The query which will be used in order to make the like statement request.

return yii\db\ActiveQuery

Returns an ActiveQuery instance in order to send to the ActiveDataProvider.

                public function ngRestFullQuerySearch($query)
{
    $find = static::ngRestFind();
    $operand = [];
    foreach ($this->genericSearchFields() as $column) {
        $operand[] = ['like', $column, $query];
    }
    $find->andWhere(new OrCondition($operand));
    return $find;
}

            
ngRestGroupByExpanded() public method (available since version 1.2.2.1)

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestGroupByExpanded()

When enabled, the field groups in the form are by default expanded (open) or not (closed).

This has no effect unless {{luya\admin\ngrest\base\NgRestModel::ngRestGroupByField()}} is configured.

public boolean ngRestGroupByExpanded ( )
return boolean

Whether the group field should be expanded or not (default is true).

                public function ngRestGroupByExpanded()
{
    return true;
}

            
ngRestGroupByField() public method (available since version 1.0.0)

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestGroupByField()

Enable the Grouping by a field option by default. Allows you to predefine the default group field.

public function ngRestGroupByField()
{
    return 'cat_id';
}

Now by default the fields are grouped by the cat_id field, the admin user can always reset the group by filter to none.

public string ngRestGroupByField ( )
return string

The field of what the default grouping should be, false disables the default grouping (default).

                public function ngRestGroupByField()
{
    return false;
}

            
ngRestListOrder() public method (available since version 1.0.0)

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestListOrder()

Define the default ordering for the ngrest list when loading, by default the primary key sorted ascending is used. To override the method for example sorting by a timestamp field:

public function ngRestListOrder()
{
    return ['created_at' => SORT_ASC];
}

If the return value is false the sorting is disabled for this NgRest CRUD.

public array ngRestListOrder ( )
return array

Return an Array where the key is the field and value the direction. Example ['timestamp' => SORT_ASC].

                public function ngRestListOrder()
{
    return [$this->getNgRestPrimaryKey()[0] => SORT_DESC];
}

            
ngRestPools() public method (available since version 2.0.0)

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestPools()

Define data pools.

The difference between ngRestFilters() and ngRestPools() is that the pool identifer must be provided in the menu component and is not visible in the UI, it is like an invisible filter, only available to developers.

A data pool can be used to retrieve only a subset of data. The identifier for the pool is passed trough to all subrelation calls. Related models will filter their data by the same pool identifier, if configured accordingly.

The following is an example of a pool identifier for a table with cars:

return [
    'poolAudi' => ['car_brand' => 'Audi'],
    'poolBMW' => ['car_brand' => 'BMW'],
];

If the pool identifier is defined in the menu, all subrelation calls will receive the identifer. Thefore, in the above example, you could have a model for car parts that only returns parts with the same pool identifier in relation calls:

return [
    'poolAudi' => ['parts_brand' => 'Audi'],
    'poolBMW' => ['parts_brand' => 'BMW'],
];

The identifiers poolAudi and poolBMW are passed to the parts table to only return parts for the given car brand.

The pool condition is threaded as where condition, the above example would be where(['car_brand' => 'BMW']). Only hash format expression with "equal" operators are allowed.

public array ngRestPools ( )

                public function ngRestPools()
{
    return [];
}

            
ngRestRelations() public method

Defined in: luya\admin\ngrest\base\NgRestModel::ngRestRelations()

Define your relations in order to access the relation data and manage them directly in the same view.

Example of how to use two relation buttons based on models which as to be ngrest model as well with apis!

public function ngRestRelations()
{
	   return [
         ['label' => 'The Label', 'targetModel' => Model::class, 'dataProvider' => $this->getSales()],
    ];
}

The above example will use the getSales() method of the current model where you are implementing this relation. The getSales() must return an {{yii\db\QueryInterface}} Object, for example you can use $this->hasMany(Model, ['key' => 'rel']) or new \yii\db\Query().

You can also define the tabLabelAttribute key with the name of a field you like the display as tab name. Assuming your table as a column title you can set 'tabLabelAttribute' => 'title' in order to display this value in the tab label.

public array ngRestRelations ( )

                public function ngRestRelations()
{
    return [];
}

            
ngRestScopes() public method

Defines the scope which field should be used for what situation.

public function ngRestScopes()
{
    return [
        ['list', ['firstname', 'lastname']],
        [['create', 'update'], ['firstname', 'lastname', 'description', 'image_id']],
        ['delete', true],
    ]:
}

The create and update scopes can also be written in seperated notation in order to configure different forms for create and update:

public function ngRestScopes()
{
    return [
        ['list', ['firstname', 'lastname']],
        ['create', ['firstname', 'lastname', 'description', 'image_id']],
        ['update', ['description']],
    ];
}
public void ngRestScopes ( )

                public function ngRestScopes()
{
    return [
        ['list', ['name', 'host', 'aliases', 'is_default', 'theme_id']],
        ['create', ['name', 'host', 'aliases', 'is_active', 'redirect_to_host', 'theme_id', 'group_ids', 'user_ids']],
        ['update', ['name', 'host', 'aliases', 'is_active', 'redirect_to_host', 'theme_id', 'group_ids', 'user_ids']],
        ['delete', true],
    ];
}

            
off() public method

Defined in: yii\base\Component::off()

Detaches an existing event handler from this component.

This method is the opposite of on().

Note: in case wildcard pattern is passed for event name, only the handlers registered with this wildcard will be removed, while handlers registered with plain names matching this wildcard will remain.

See also on().

public boolean off ( $name, $handler null )
$name string

Event name

$handler callable|null

The event handler to be removed. If it is null, all handlers attached to the named event will be removed.

return boolean

If a handler is found and detached

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
offsetExists() public method

Defined in: yii\db\BaseActiveRecord::offsetExists()

Returns whether there is an element at the specified offset.

This method is required by the interface ArrayAccess.

public boolean offsetExists ( $offset )
$offset mixed

The offset to check on

return boolean

Whether there is an element at the specified offset.

                #[\ReturnTypeWillChange]
public function offsetExists($offset)
{
    return $this->__isset($offset);
}

            
offsetGet() public method

Defined in: yii\base\Model::offsetGet()

Returns the element at the specified offset.

This method is required by the SPL interface ArrayAccess. It is implicitly called when you use something like $value = $model[$offset];.

public mixed offsetGet ( $offset )
$offset string

The offset to retrieve element.

return mixed

The element at the offset, null if no element is found at the offset

                #[\ReturnTypeWillChange]
public function offsetGet($offset)
{
    return $this->$offset;
}

            
offsetSet() public method

Defined in: yii\base\Model::offsetSet()

Sets the element at the specified offset.

This method is required by the SPL interface ArrayAccess. It is implicitly called when you use something like $model[$offset] = $value;.

public void offsetSet ( $offset, $value )
$offset string

The offset to set element

$value mixed

The element value

                #[\ReturnTypeWillChange]
public function offsetSet($offset, $value)
{
    $this->$offset = $value;
}

            
offsetUnset() public method

Defined in: yii\db\BaseActiveRecord::offsetUnset()

Sets the element value at the specified offset to null.

This method is required by the SPL interface ArrayAccess. It is implicitly called when you use something like unset($model[$offset]).

public void offsetUnset ( $offset )
$offset mixed

The offset to unset element

                public function offsetUnset($offset)
{
    if (property_exists($this, $offset)) {
        $this->$offset = null;
    } else {
        unset($this->$offset);
    }
}

            
on() public method

Defined in: yii\base\Component::on()

Attaches an event handler to an event.

The event handler must be a valid PHP callback. The following are some examples:

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

The event handler must be defined with the following signature,

function ($event)

where $event is an yii\base\Event object which includes parameters associated with the event.

Since 2.0.14 you can specify event name as a wildcard pattern:

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

See also off().

public void on ( $name, $handler, $data null, $append true )
$name string

The event name

$handler callable

The event handler

$data mixed

The data to be passed to the event handler when the event is triggered. When the event handler is invoked, this data can be accessed via yii\base\Event::$data.

$append boolean

Whether to append new event handler to the end of the existing handler list. If false, the new handler will be inserted at the beginning of the existing handler list.

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
onUnsafeAttribute() public method

Defined in: yii\base\Model::onUnsafeAttribute()

This method is invoked when an unsafe attribute is being massively assigned.

The default implementation will log a warning message if YII_DEBUG is on. It does nothing otherwise.

public void onUnsafeAttribute ( $name, $value )
$name string

The unsafe attribute name

$value mixed

The attribute value

                public function onUnsafeAttribute($name, $value)
{
    if (YII_DEBUG) {
        Yii::debug("Failed to set unsafe attribute '$name' in '" . get_class($this) . "'.", __METHOD__);
    }
}

            
optimisticLock() public method

Defined in: yii\db\BaseActiveRecord::optimisticLock()

Returns the name of the column that stores the lock version for implementing optimistic locking.

Optimistic locking allows multiple users to access the same record for edits and avoids potential conflicts. In case when a user attempts to save the record upon some staled data (because another user has modified the data), a yii\db\StaleObjectException exception will be thrown, and the update or deletion is skipped.

Optimistic locking is only supported by update() and delete().

To use Optimistic locking:

  1. Create a column to store the version number of each row. The column type should be BIGINT DEFAULT 0. Override this method to return the name of this column.
  2. Ensure the version value is submitted and loaded to your model before any update or delete. Or add OptimisticLockBehavior to your model class in order to automate the process.
  3. In the Web form that collects the user input, add a hidden field that stores the lock version of the record being updated.
  4. In the controller action that does the data updating, try to catch the yii\db\StaleObjectException and implement necessary business logic (e.g. merging the changes, prompting stated data) to resolve the conflict.
public string|null optimisticLock ( )
return string|null

The column name that stores the lock version of a table row. If null is returned (default implemented), optimistic locking will not be supported.

                public function optimisticLock()
{
    return null;
}

            
populateRecord() public static method

Defined in: yii\db\ActiveRecord::populateRecord()

Populates an active record object using a row of data from the database/storage.

This is an internal method meant to be called to create active record objects after fetching data from the database. It is mainly used by yii\db\ActiveQuery to populate the query results into active records.

When calling this method manually you should call afterFind() on the created record to trigger the afterFind Event.

public static void populateRecord ( $record, $row )
$record yii\db\BaseActiveRecord

The record to be populated. In most cases this will be an instance created by instantiate() beforehand.

$row array

Attribute values (name => value)

                public static function populateRecord($record, $row)
{
    $columns = static::getTableSchema()->columns;
    foreach ($row as $name => $value) {
        if (isset($columns[$name])) {
            $row[$name] = $columns[$name]->phpTypecast($value);
        }
    }
    parent::populateRecord($record, $row);
}

            
populateRelation() public method

Defined in: yii\db\BaseActiveRecord::populateRelation()

Populates the named relation with the related records.

Note that this method does not check if the relation exists or not.

See also getRelation().

public void populateRelation ( $name, $records )
$name string

The relation name, e.g. orders for a relation defined via getOrders() method (case-sensitive).

$records yii\db\ActiveRecordInterface|array|null

The related records to be populated into the relation.

                public function populateRelation($name, $records)
{
    foreach ($this->_relationsDependencies as &$relationNames) {
        unset($relationNames[$name]);
    }
    $this->_related[$name] = $records;
}

            
primaryKey() public static method

Defined in: yii\db\ActiveRecord::primaryKey()

Returns the primary key name(s) for this AR class.

The default implementation will return the primary key(s) as declared in the DB table that is associated with this AR class.

If the DB table does not declare any primary key, you should override this method to return the attributes that you want to use as primary keys for this AR class.

Note that an array should be returned even for a table with single primary key.

public static string[] primaryKey ( )
return string[]

The primary keys of the associated database table.

                public static function primaryKey()
{
    return static::getTableSchema()->primaryKey;
}

            
refresh() public method

Defined in: yii\db\ActiveRecord::refresh()

Repopulates this active record with the latest data.

If the refresh is successful, an EVENT_AFTER_REFRESH event will be triggered. This event is available since version 2.0.8.

public boolean refresh ( )
return boolean

Whether the row still exists in the database. If true, the latest data will be populated to this active record. Otherwise, this record will remain unchanged.

                public function refresh()
{
    $query = static::find();
    $tableName = key($query->getTablesUsedInFrom());
    $pk = [];
    // disambiguate column names in case ActiveQuery adds a JOIN
    foreach ($this->getPrimaryKey(true) as $key => $value) {
        $pk[$tableName . '.' . $key] = $value;
    }
    $query->where($pk);
    /* @var $record BaseActiveRecord */
    $record = $query->noCache()->one();
    return $this->refreshInternal($record);
}

            
refreshInternal() protected method (available since version 2.0.13)

Defined in: yii\db\BaseActiveRecord::refreshInternal()

Repopulates this active record with the latest data from a newly fetched instance.

See also refresh().

protected boolean refreshInternal ( $record )
$record yii\db\BaseActiveRecord

The record to take attributes from.

return boolean

Whether refresh was successful.

                protected function refreshInternal($record)
{
    if ($record === null) {
        return false;
    }
    foreach ($this->attributes() as $name) {
        $this->_attributes[$name] = isset($record->_attributes[$name]) ? $record->_attributes[$name] : null;
    }
    $this->_oldAttributes = $record->_oldAttributes;
    $this->_related = [];
    $this->_relationsDependencies = [];
    $this->afterRefresh();
    return true;
}

            
resolveFields() protected method

Defined in: yii\base\ArrayableTrait::resolveFields()

Determines which fields can be returned by toArray().

This method will first extract the root fields from the given fields. Then it will check the requested root fields against those declared in fields() and extraFields() to determine which fields can be returned.

protected array resolveFields ( array $fields, array $expand )
$fields array

The fields being requested for exporting

$expand array

The additional fields being requested for exporting

return array

The list of fields to be exported. The array keys are the field names, and the array values are the corresponding object property names or PHP callables returning the field values.

                protected function resolveFields(array $fields, array $expand)
{
    $fields = $this->extractRootFields($fields);
    $expand = $this->extractRootFields($expand);
    $result = [];
    foreach ($this->fields() as $field => $definition) {
        if (is_int($field)) {
            $field = $definition;
        }
        if (empty($fields) || in_array($field, $fields, true)) {
            $result[$field] = $definition;
        }
    }
    if (empty($expand)) {
        return $result;
    }
    foreach ($this->extraFields() as $field => $definition) {
        if (is_int($field)) {
            $field = $definition;
        }
        if (in_array($field, $expand, true)) {
            $result[$field] = $definition;
        }
    }
    return $result;
}

            
rules() public method

public void rules ( )

                public function rules()
{
    return [
        [['name', 'host'], 'required'],
        [['name', 'host'], 'unique'],
        [['theme_id'], 'integer'],
        [['is_active', 'is_default', 'is_deleted', 'redirect_to_host'], 'boolean'],
        [['aliases', 'default_lang', 'group_ids', 'user_ids'], 'string']
    ];
}

            
runI18nContextOnFindPlugin() protected method (available since version 2.3.0)

Defined in: luya\admin\ngrest\base\NgRestModel::runI18nContextOnFindPlugin()

Run an attribute plugin in i18n context in order to ensure plugin functions.

This method will return the plugin of the given attribute with the context of the new value. This allows you to re-run plugin options like markdown on a given attribute.

This is mainly used when the {{i18nAttributeFallbackValue()}} method finds an i18n value and needs to re-run the configured plugin options like nl2br, markdown, conver to link object.

protected mixed runI18nContextOnFindPlugin ( $attributeName, $value )
$attributeName string
$value mixed

                protected function runI18nContextOnFindPlugin($attributeName, $value)
{
    // create the plugin without i18n context as the plugin can handle whether its i18n or not
    $plugin = clone $this->getPluginObject($attributeName);
    $plugin->i18n = false;
    // prepare the context for the event with the current model.
    $senderContext = clone $this;
    $senderContext->{$attributeName} = $value;
    $plugin->onFind(new Event(['sender' => $senderContext]));
    // as the plugin as run the onFind event the sender context will have the new value
    $convertedValue = $senderContext->{$attributeName};
    // clear variables to help with memory issues
    unset($plugin, $senderContext);
    return $convertedValue;
}

            
safeAttributes() public method

Defined in: yii\base\Model::safeAttributes()

Returns the attribute names that are safe to be massively assigned in the current scenario.

public string[] safeAttributes ( )
return string[]

Safe attribute names

                public function safeAttributes()
{
    $scenario = $this->getScenario();
    $scenarios = $this->scenarios();
    if (!isset($scenarios[$scenario])) {
        return [];
    }
    $attributes = [];
    foreach ($scenarios[$scenario] as $attribute) {
        if (
            $attribute !== ''
            && strncmp($attribute, '!', 1) !== 0
            && !in_array('!' . $attribute, $scenarios[$scenario])
        ) {
            $attributes[] = $attribute;
        }
    }
    return $attributes;
}

            
save() public method

Defined in: yii\db\BaseActiveRecord::save()

Saves the current record.

This method will call insert() when $isNewRecord is true, or update() when $isNewRecord is false.

For example, to save a customer record:

$customer = new Customer; // or $customer = Customer::findOne($id);
$customer->name = $name;
$customer->email = $email;
$customer->save();
public boolean save ( $runValidation true, $attributeNames null )
$runValidation boolean

Whether to perform validation (calling validate()) before saving the record. Defaults to true. If the validation fails, the record will not be saved to the database and this method will return false.

$attributeNames array|null

List of attribute names that need to be saved. Defaults to null, meaning all attributes that are loaded from DB will be saved.

return boolean

Whether the saving succeeded (i.e. no validation errors occurred).

                public function save($runValidation = true, $attributeNames = null)
{
    if ($this->getIsNewRecord()) {
        return $this->insert($runValidation, $attributeNames);
    }
    return $this->update($runValidation, $attributeNames) !== false;
}

            
scenarios() public method

Defined in: luya\admin\ngrest\base\NgRestModel::scenarios()

Returns a list of scenarios and the corresponding active attributes.

An active attribute is one that is subject to validation in the current scenario. The returned array should be in the following format:

[
    'scenario1' => ['attribute11', 'attribute12', ...],
    'scenario2' => ['attribute21', 'attribute22', ...],
    ...
]

By default, an active attribute is considered safe and can be massively assigned. If an attribute should NOT be massively assigned (thus considered unsafe), please prefix the attribute with an exclamation character (e.g. '!rank').

The default implementation of this method will return all scenarios found in the rules() declaration. A special scenario named SCENARIO_DEFAULT will contain all attributes found in the rules(). Each scenario will be associated with the attributes that are being validated by the validation rules that apply to the scenario.

public array scenarios ( )
return array

A list of scenarios and the corresponding active attributes.

                public function scenarios()
{
    $scenarios = parent::scenarios();
    $scenarios[self::SCENARIO_RESTCREATE] = $scenarios[self::SCENARIO_DEFAULT];
    $scenarios[self::SCENARIO_RESTUPDATE] = $scenarios[self::SCENARIO_DEFAULT];
    return $scenarios;
}

            
setAttribute() public method

Defined in: yii\db\BaseActiveRecord::setAttribute()

Sets the named attribute value.

See also hasAttribute().

public void setAttribute ( $name, $value )
$name string

The attribute name

$value mixed

The attribute value.

throws yii\base\InvalidArgumentException

if the named attribute does not exist.

                public function setAttribute($name, $value)
{
    if ($this->hasAttribute($name)) {
        if (
            !empty($this->_relationsDependencies[$name])
            && (!array_key_exists($name, $this->_attributes) || $this->_attributes[$name] !== $value)
        ) {
            $this->resetDependentRelations($name);
        }
        $this->_attributes[$name] = $value;
    } else {
        throw new InvalidArgumentException(get_class($this) . ' has no attribute named "' . $name . '".');
    }
}

            
setAttributes() public method

Defined in: yii\base\Model::setAttributes()

Sets the attribute values in a massive way.

See also:

public void setAttributes ( $values, $safeOnly true )
$values array

Attribute values (name => value) to be assigned to the model.

$safeOnly boolean

Whether the assignments should only be done to the safe attributes. A safe attribute is one that is associated with a validation rule in the current $scenario.

                public function setAttributes($values, $safeOnly = true)
{
    if (is_array($values)) {
        $attributes = array_flip($safeOnly ? $this->safeAttributes() : $this->attributes());
        foreach ($values as $name => $value) {
            if (isset($attributes[$name])) {
                $this->$name = $value;
            } elseif ($safeOnly) {
                $this->onUnsafeAttribute($name, $value);
            }
        }
    }
}

            
setI18nOldValue() public method (available since version 3.6.0)

Defined in: luya\admin\ngrest\base\NgRestModel::setI18nOldValue()

Set the old json value from a i18n database value.

This method is used when the ngrest plugins are overiding the values from the database. Therefore the original database values can be stored here in order to retrieve those informations in later stage. f.e. when accessing language values for another language the current application language

See also https://github.com/luyadev/luya-module-admin/pull/567.

public void setI18nOldValue ( $attributeName, $value )
$attributeName string

The attribute name associated with the json value

$value string

A json with the values f.e. {"de":"foobar","en":"foobaz"}

                public function setI18nOldValue($attributeName, $value)
{
    $this->_i18nOldValues[$attributeName] = $value;
}

            
setIsNewRecord() public method

Defined in: yii\db\BaseActiveRecord::setIsNewRecord()

Sets the value indicating whether the record is new.

See also getIsNewRecord().

public void setIsNewRecord ( $value )
$value boolean

Whether the record is new and should be inserted when calling save().

                public function setIsNewRecord($value)
{
    $this->_oldAttributes = $value ? null : $this->_attributes;
}

            
setNgRestPrimaryKey() public method

Defined in: luya\admin\ngrest\base\NgRestModel::setNgRestPrimaryKey()

Setter method for NgRest Primary Key

public void setNgRestPrimaryKey ( $key )
$key string

                public function setNgRestPrimaryKey($key)
{
    $this->_ngRestPrimaryKey = $key;
}

            
setOldAttribute() public method

Defined in: yii\db\BaseActiveRecord::setOldAttribute()

Sets the old value of the named attribute.

See also hasAttribute().

public void setOldAttribute ( $name, $value )
$name string

The attribute name

$value mixed

The old attribute value.

throws yii\base\InvalidArgumentException

if the named attribute does not exist.

                public function setOldAttribute($name, $value)
{
    if (isset($this->_oldAttributes[$name]) || $this->hasAttribute($name)) {
        $this->_oldAttributes[$name] = $value;
    } else {
        throw new InvalidArgumentException(get_class($this) . ' has no attribute named "' . $name . '".');
    }
}

            
setOldAttributes() public method

Defined in: yii\db\BaseActiveRecord::setOldAttributes()

Sets the old attribute values.

All existing old attribute values will be discarded.

public void setOldAttributes ( $values )
$values array|null

Old attribute values to be set. If set to null this record is considered to be new.

                public function setOldAttributes($values)
{
    $this->_oldAttributes = $values;
}

            
setScenario() public method

Defined in: yii\base\Model::setScenario()

Sets the scenario for the model.

Note that this method does not check if the scenario exists or not. The method validate() will perform this check.

public void setScenario ( $value )
$value string

The scenario that this model is in.

                public function setScenario($value)
{
    $this->_scenario = $value;
}

            
tableName() public static method

public static void tableName ( )

                public static function tableName()
{
    return 'cms_website';
}

            
toArray() public method

Defined in: yii\base\ArrayableTrait::toArray()

Converts the model into an array.

This method will first identify which fields to be included in the resulting array by calling resolveFields(). It will then turn the model into an array with these fields. If $recursive is true, any embedded objects will also be converted into arrays. When embedded objects are yii\base\Arrayable, their respective nested fields will be extracted and passed to toArray().

If the model implements the yii\web\Linkable interface, the resulting array will also have a _link element which refers to a list of links as specified by the interface.

public array toArray ( array $fields = [], array $expand = [], $recursive true )
$fields array

The fields being requested. If empty or if it contains '*', all fields as specified by fields() will be returned. Fields can be nested, separated with dots (.). e.g.: item.field.sub-field $recursive must be true for nested fields to be extracted. If $recursive is false, only the root fields will be extracted.

$expand array

The additional fields being requested for exporting. Only fields declared in extraFields() will be considered. Expand can also be nested, separated with dots (.). e.g.: item.expand1.expand2 $recursive must be true for nested expands to be extracted. If $recursive is false, only the root expands will be extracted.

$recursive boolean

Whether to recursively return array representation of embedded objects.

return array

The array representation of the object

                public function toArray(array $fields = [], array $expand = [], $recursive = true)
{
    $data = [];
    foreach ($this->resolveFields($fields, $expand) as $field => $definition) {
        $attribute = is_string($definition) ? $this->$definition : $definition($this, $field);
        if ($recursive) {
            $nestedFields = $this->extractFieldsFor($fields, $field);
            $nestedExpand = $this->extractFieldsFor($expand, $field);
            if ($attribute instanceof Arrayable) {
                $attribute = $attribute->toArray($nestedFields, $nestedExpand);
            } elseif ($attribute instanceof \JsonSerializable) {
                $attribute = $attribute->jsonSerialize();
            } elseif (is_array($attribute)) {
                $attribute = array_map(
                    function ($item) use ($nestedFields, $nestedExpand) {
                        if ($item instanceof Arrayable) {
                            return $item->toArray($nestedFields, $nestedExpand);
                        } elseif ($item instanceof \JsonSerializable) {
                            return $item->jsonSerialize();
                        }
                        return $item;
                    },
                    $attribute
                );
            }
        }
        $data[$field] = $attribute;
    }
    if ($this instanceof Linkable) {
        $data['_links'] = Link::serialize($this->getLinks());
    }
    return $recursive ? ArrayHelper::toArray($data) : $data;
}

            
transactions() public method

public void transactions ( )

                public function transactions()
{
    return [
        self::SCENARIO_DEFAULT => self::OP_INSERT,
    ];
}

            
trigger() public method

Defined in: yii\base\Component::trigger()

Triggers an event.

This method represents the happening of an event. It invokes all attached handlers for the event including class-level handlers.

public void trigger ( $name, yii\base\Event $event null )
$name string

The event name

$event yii\base\Event|null

The event instance. If not set, a default yii\base\Event object will be created.

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}

            
unlink() public method

Defined in: yii\db\BaseActiveRecord::unlink()

Destroys the relationship between two models.

The model with the foreign key of the relationship will be deleted if $delete is true. Otherwise, the foreign key will be set null and the model will be saved without validation.

public void unlink ( $name, $model, $delete false )
$name string

The case sensitive name of the relationship, e.g. orders for a relation defined via getOrders() method.

$model yii\db\ActiveRecordInterface

The model to be unlinked from the current one. You have to make sure that the model is really related with the current model as this method does not check this.

$delete boolean

Whether to delete the model that contains the foreign key. If false, the model's foreign key will be set null and saved. If true, the model containing the foreign key will be deleted.

throws yii\base\InvalidCallException

if the models cannot be unlinked

throws yii\db\Exception
throws yii\db\StaleObjectException

unlinkAll() public method

Defined in: yii\db\BaseActiveRecord::unlinkAll()

Destroys the relationship in current model.

The model with the foreign key of the relationship will be deleted if $delete is true. Otherwise, the foreign key will be set null and the model will be saved without validation.

Note that to destroy the relationship without removing records make sure your keys can be set to null

public void unlinkAll ( $name, $delete false )
$name string

The case sensitive name of the relationship, e.g. orders for a relation defined via getOrders() method.

$delete boolean

Whether to delete the model that contains the foreign key.

Note that the deletion will be performed using deleteAll(), which will not trigger any events on the related models. If you need EVENT_BEFORE_DELETE or EVENT_AFTER_DELETE to be triggered, you need to find the models first and then call delete() on each of them.

                public function unlinkAll($name, $delete = false)
{
    /* @var $relation ActiveQueryInterface|ActiveQuery */
    $relation = $this->getRelation($name);
    if ($relation->via !== null) {
        if (is_array($relation->via)) {
            /* @var $viaRelation ActiveQuery */
            list($viaName, $viaRelation) = $relation->via;
            $viaClass = $viaRelation->modelClass;
            unset($this->_related[$viaName]);
        } else {
            $viaRelation = $relation->via;
            $viaTable = reset($relation->via->from);
        }
        $condition = [];
        $nulls = [];
        foreach ($viaRelation->link as $a => $b) {
            $nulls[$a] = null;
            $condition[$a] = $this->$b;
        }
        if (!empty($viaRelation->where)) {
            $condition = ['and', $condition, $viaRelation->where];
        }
        if (property_exists($viaRelation, 'on') && !empty($viaRelation->on)) {
            $condition = ['and', $condition, $viaRelation->on];
        }
        if (is_array($relation->via)) {
            /* @var $viaClass ActiveRecordInterface */
            if ($delete) {
                $viaClass::deleteAll($condition);
            } else {
                $viaClass::updateAll($nulls, $condition);
            }
        } else {
            /* @var $viaTable string */
            /* @var $command Command */
            $command = static::getDb()->createCommand();
            if ($delete) {
                $command->delete($viaTable, $condition)->execute();
            } else {
                $command->update($viaTable, $nulls, $condition)->execute();
            }
        }
    } else {
        /* @var $relatedModel ActiveRecordInterface */
        $relatedModel = $relation->modelClass;
        if (!$delete && count($relation->link) === 1 && is_array($this->{$b = reset($relation->link)})) {
            // relation via array valued attribute
            $this->$b = [];
            $this->save(false);
        } else {
            $nulls = [];
            $condition = [];
            foreach ($relation->link as $a => $b) {
                $nulls[$a] = null;
                $condition[$a] = $this->$b;
            }
            if (!empty($relation->where)) {
                $condition = ['and', $condition, $relation->where];
            }
            if (property_exists($relation, 'on') && !empty($relation->on)) {
                $condition = ['and', $condition, $relation->on];
            }
            if ($delete) {
                $relatedModel::deleteAll($condition);
            } else {
                $relatedModel::updateAll($nulls, $condition);
            }
        }
    }
    unset($this->_related[$name]);
}

            
update() public method

Defined in: yii\db\ActiveRecord::update()

Saves the changes to this active record into the associated database table.

This method performs the following steps in order:

  1. call beforeValidate() when $runValidation is true. If beforeValidate() returns false, the rest of the steps will be skipped;
  2. call afterValidate() when $runValidation is true. If validation failed, the rest of the steps will be skipped;
  3. call beforeSave(). If beforeSave() returns false, the rest of the steps will be skipped;
  4. save the record into database. If this fails, it will skip the rest of the steps;
  5. call afterSave();

In the above step 1, 2, 3 and 5, events EVENT_BEFORE_VALIDATE, EVENT_AFTER_VALIDATE, EVENT_BEFORE_UPDATE, and EVENT_AFTER_UPDATE will be raised by the corresponding methods.

Only the changed attribute values will be saved into database.

For example, to update a customer record:

$customer = Customer::findOne($id);
$customer->name = $name;
$customer->email = $email;
$customer->update();

Note that it is possible the update does not affect any row in the table. In this case, this method will return 0. For this reason, you should use the following code to check if update() is successful or not:

if ($customer->update() !== false) {
    // update successful
} else {
    // update failed
}
public integer|false update ( $runValidation true, $attributeNames null )
$runValidation boolean

Whether to perform validation (calling validate()) before saving the record. Defaults to true. If the validation fails, the record will not be saved to the database and this method will return false.

$attributeNames array|null

List of attributes that need to be saved. Defaults to null, meaning all attributes that are loaded from DB will be saved.

return integer|false

The number of rows affected, or false if validation fails or beforeSave() stops the updating process.

throws yii\db\StaleObjectException

if optimistic locking is enabled and the data being updated is outdated.

throws Throwable

in case update failed.

                public function update($runValidation = true, $attributeNames = null)
{
    if ($runValidation && !$this->validate($attributeNames)) {
        Yii::info('Model not updated due to validation error.', __METHOD__);
        return false;
    }
    if (!$this->isTransactional(self::OP_UPDATE)) {
        return $this->updateInternal($attributeNames);
    }
    $transaction = static::getDb()->beginTransaction();
    try {
        $result = $this->updateInternal($attributeNames);
        if ($result === false) {
            $transaction->rollBack();
        } else {
            $transaction->commit();
        }
        return $result;
    } catch (\Exception $e) {
        $transaction->rollBack();
        throw $e;
    } catch (\Throwable $e) {
        $transaction->rollBack();
        throw $e;
    }
}

            
updateAll() public static method

Defined in: yii\db\ActiveRecord::updateAll()

Updates the whole table using the provided attribute values and conditions.

For example, to change the status to be 1 for all customers whose status is 2:

Customer::updateAll(['status' => 1], 'status = 2');

Warning: If you do not specify any condition, this method will update all rows in the table.

Note that this method will not trigger any events. If you need EVENT_BEFORE_UPDATE or EVENT_AFTER_UPDATE to be triggered, you need to find the models first and then call update() on each of them. For example an equivalent of the example above would be:

$models = Customer::find()->where('status = 2')->all();
foreach ($models as $model) {
    $model->status = 1;
    $model->update(false); // skipping validation as no user input is involved
}

For a large set of models you might consider using yii\db\ActiveQuery::each() to keep memory usage within limits.

public static integer updateAll ( $attributes, $condition '', $params = [] )
$attributes array

Attribute values (name-value pairs) to be saved into the table

$condition string|array

The conditions that will be put in the WHERE part of the UPDATE SQL. Please refer to yii\db\Query::where() on how to specify this parameter.

$params array

The parameters (name => value) to be bound to the query.

return integer

The number of rows updated

                public static function updateAll($attributes, $condition = '', $params = [])
{
    $command = static::getDb()->createCommand();
    $command->update(static::tableName(), $attributes, $condition, $params);
    return $command->execute();
}

            
updateAllCounters() public static method

Defined in: yii\db\ActiveRecord::updateAllCounters()

Updates the whole table using the provided counter changes and conditions.

For example, to increment all customers' age by 1,

Customer::updateAllCounters(['age' => 1]);

Note that this method will not trigger any events.

public static integer updateAllCounters ( $counters, $condition '', $params = [] )
$counters array

The counters to be updated (attribute name => increment value). Use negative values if you want to decrement the counters.

$condition string|array

The conditions that will be put in the WHERE part of the UPDATE SQL. Please refer to yii\db\Query::where() on how to specify this parameter.

$params array

The parameters (name => value) to be bound to the query. Do not name the parameters as :bp0, :bp1, etc., because they are used internally by this method.

return integer

The number of rows updated

                public static function updateAllCounters($counters, $condition = '', $params = [])
{
    $n = 0;
    foreach ($counters as $name => $value) {
        $counters[$name] = new Expression("[[$name]]+:bp{$n}", [":bp{$n}" => $value]);
        $n++;
    }
    $command = static::getDb()->createCommand();
    $command->update(static::tableName(), $counters, $condition, $params);
    return $command->execute();
}

            
updateAttributes() public method

Defined in: yii\db\BaseActiveRecord::updateAttributes()

Updates the specified attributes.

This method is a shortcut to update() when data validation is not needed and only a small set attributes need to be updated.

You may specify the attributes to be updated as name list or name-value pairs. If the latter, the corresponding attribute values will be modified accordingly. The method will then save the specified attributes into database.

Note that this method will not perform data validation and will not trigger events.

public integer updateAttributes ( $attributes )
$attributes array

The attributes (names or name-value pairs) to be updated

return integer

The number of rows affected.

                public function updateAttributes($attributes)
{
    $attrs = [];
    foreach ($attributes as $name => $value) {
        if (is_int($name)) {
            $attrs[] = $value;
        } else {
            $this->$name = $value;
            $attrs[] = $name;
        }
    }
    $values = $this->getDirtyAttributes($attrs);
    if (empty($values) || $this->getIsNewRecord()) {
        return 0;
    }
    $rows = static::updateAll($values, $this->getOldPrimaryKey(true));
    foreach ($values as $name => $value) {
        $this->_oldAttributes[$name] = $this->_attributes[$name];
    }
    return $rows;
}

            
updateCounters() public method

Defined in: yii\db\BaseActiveRecord::updateCounters()

Updates one or several counter columns for the current AR object.

Note that this method differs from updateAllCounters() in that it only saves counters for the current AR object.

An example usage is as follows:

$post = Post::findOne($id);
$post->updateCounters(['view_count' => 1]);

See also updateAllCounters().

public boolean updateCounters ( $counters )
$counters array

The counters to be updated (attribute name => increment value) Use negative values if you want to decrement the counters.

return boolean

Whether the saving is successful

                public function updateCounters($counters)
{
    if (static::updateAllCounters($counters, $this->getOldPrimaryKey(true)) > 0) {
        foreach ($counters as $name => $value) {
            if (!isset($this->_attributes[$name])) {
                $this->_attributes[$name] = $value;
            } else {
                $this->_attributes[$name] += $value;
            }
            $this->_oldAttributes[$name] = $this->_attributes[$name];
        }
        return true;
    }
    return false;
}

            
updateInternal() protected method
protected integer|false updateInternal ( $attributes null )
$attributes array|null

Attributes to update

return integer|false

The number of rows affected, or false if beforeSave() stops the updating process.

throws yii\db\StaleObjectException

                protected function updateInternal($attributes = null)
{
    if (!$this->beforeSave(false)) {
        return false;
    }
    $values = $this->getDirtyAttributes($attributes);
    if (empty($values)) {
        $this->afterSave(false, $values);
        return 0;
    }
    $condition = $this->getOldPrimaryKey(true);
    $lock = $this->optimisticLock();
    if ($lock !== null) {
        $values[$lock] = $this->$lock + 1;
        $condition[$lock] = $this->$lock;
    }
    // We do not check the return value of updateAll() because it's possible
    // that the UPDATE statement doesn't change anything and thus returns 0.
    $rows = static::updateAll($values, $condition);
    if ($lock !== null && !$rows) {
        throw new StaleObjectException('The object being updated is outdated.');
    }
    if (isset($values[$lock])) {
        $this->$lock = $values[$lock];
    }
    $changedAttributes = [];
    foreach ($values as $name => $value) {
        $changedAttributes[$name] = isset($this->_oldAttributes[$name]) ? $this->_oldAttributes[$name] : null;
        $this->_oldAttributes[$name] = $value;
    }
    $this->afterSave(false, $changedAttributes);
    return $rows;
}

            
validate() public method

Defined in: yii\base\Model::validate()

Performs the data validation.

This method executes the validation rules applicable to the current $scenario. The following criteria are used to determine whether a rule is currently applicable:

  • the rule must be associated with the attributes relevant to the current scenario;
  • the rules must be effective for the current scenario.

This method will call beforeValidate() and afterValidate() before and after the actual validation, respectively. If beforeValidate() returns false, the validation will be cancelled and afterValidate() will not be called.

Errors found during the validation can be retrieved via getErrors(), getFirstErrors() and getFirstError().

public boolean validate ( $attributeNames null, $clearErrors true )
$attributeNames string[]|string|null

Attribute name or list of attribute names that should be validated. If this parameter is empty, it means any attribute listed in the applicable validation rules should be validated.

$clearErrors boolean

Whether to call clearErrors() before performing validation

return boolean

Whether the validation is successful without any error.

throws yii\base\InvalidArgumentException

if the current scenario is unknown.

                public function validate($attributeNames = null, $clearErrors = true)
{
    if ($clearErrors) {
        $this->clearErrors();
    }
    if (!$this->beforeValidate()) {
        return false;
    }
    $scenarios = $this->scenarios();
    $scenario = $this->getScenario();
    if (!isset($scenarios[$scenario])) {
        throw new InvalidArgumentException("Unknown scenario: $scenario");
    }
    if ($attributeNames === null) {
        $attributeNames = $this->activeAttributes();
    }
    $attributeNames = (array)$attributeNames;
    foreach ($this->getActiveValidators() as $validator) {
        $validator->validateAttributes($this, $attributeNames);
    }
    $this->afterValidate();
    return !$this->hasErrors();
}

            
validateMultiple() public static method

Defined in: yii\base\Model::validateMultiple()

Validates multiple models.

This method will validate every model. The models being validated may be of the same or different types.

public static boolean validateMultiple ( $models, $attributeNames null )
$models array

The models to be validated

$attributeNames array|null

List of attribute names that should be validated. If this parameter is empty, it means any attribute listed in the applicable validation rules should be validated.

return boolean

Whether all models are valid. False will be returned if one or multiple models have validation error.

                public static function validateMultiple($models, $attributeNames = null)
{
    $valid = true;
    /* @var $model Model */
    foreach ($models as $model) {
        $valid = $model->validate($attributeNames) && $valid;
    }
    return $valid;
}