2 フォロワー

抽象クラス yii\db\BaseActiveRecord

継承yii\db\BaseActiveRecord » yii\base\Model » yii\base\Component » yii\base\BaseObject
実装ArrayAccess, IteratorAggregate, yii\base\Arrayable, yii\base\Configurable, yii\base\StaticInstanceInterface, yii\db\ActiveRecordInterface
使用トレイトyii\base\ArrayableTrait, yii\base\StaticInstanceTrait
サブクラスyii\db\ActiveRecord
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/db/BaseActiveRecord.php

ActiveRecordは、オブジェクトの観点からリレーショナルデータを表現するクラスの基本クラスです。

具体的な実装については、yii\db\ActiveRecord を参照してください。

公開プロパティ

継承されたプロパティを非表示

プロパティ 説明 定義元
$activeValidators yii\validators\Validator[] 現在の $scenario に適用可能なバリデーター。 yii\base\Model
$attributes array 属性値 (名前 => 値)。 yii\base\Model
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$dirtyAttributes array 変更された属性値(名前と値のペア)。 yii\db\BaseActiveRecord
$errors array すべての属性または指定された属性のエラー。 yii\base\Model
$firstErrors array 最初のエラー。 yii\base\Model
$isNewRecord boolean レコードが新しいかどうか、save() を呼び出すときに挿入されるべきかどうか。 yii\db\BaseActiveRecord
$iterator ArrayIterator リスト内の項目をトラバースするためのイテレータ。 yii\base\Model
$oldAttributes array 古い属性値(名前と値のペア)。 yii\db\BaseActiveRecord
$oldPrimaryKey mixed 古い主キー値。 yii\db\BaseActiveRecord
$primaryKey mixed 主キーの値。 yii\db\BaseActiveRecord
$relatedRecords array リレーション名でインデックス付けされた関連レコードの配列。 yii\db\BaseActiveRecord
$scenario string このモデルが存在するシナリオ。 yii\base\Model
$validators ArrayObject|yii\validators\Validator[] モデルで宣言されたすべてのバリデーター。 yii\base\Model

公開メソッド

継承されたメソッドを非表示

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、既存のオブジェクトをクローンすることによってオブジェクトが作成された後に呼び出されます。 yii\base\Model
__construct() コンストラクタ。 yii\base\BaseObject
__get() PHPのゲッターマジックメソッド。 yii\db\BaseActiveRecord
__isset() プロパティの値がnullかどうかをチェックします。 yii\db\BaseActiveRecord
__set() PHPのセッターマジックメソッド。 yii\db\BaseActiveRecord
__unset() コンポーネントのプロパティを null に設定します。 yii\db\BaseActiveRecord
activeAttributes() 現在のシナリオでバリデーションの対象となる属性名を返します。 yii\base\Model
addError() 指定された属性に新しいエラーを追加します。 yii\base\Model
addErrors() エラーのリストを追加します。 yii\base\Model
afterDelete() このメソッドは、レコードを削除した後に呼び出されます。 yii\db\BaseActiveRecord
afterFind() このメソッドは、ARオブジェクトが作成され、クエリ結果が設定されたときに呼び出されます。 yii\db\BaseActiveRecord
afterRefresh() このメソッドは、ARオブジェクトがリフレッシュされたときに呼び出されます。 yii\db\BaseActiveRecord
afterSave() このメソッドは、レコードの挿入または更新の最後に呼び出されます。 yii\db\BaseActiveRecord
afterValidate() このメソッドは、バリデーションの終了後に呼び出されます。 yii\base\Model
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
attributeHints() 属性ヒントを返します。 yii\base\Model
attributeLabels() 属性ラベルを返します。 yii\base\Model
attributes() 属性名のリストを返します。 yii\base\Model
beforeDelete() このメソッドは、レコードを削除する前に呼び出されます。 yii\db\BaseActiveRecord
beforeSave() このメソッドは、レコードの挿入または更新の開始時に呼び出されます。 yii\db\BaseActiveRecord
beforeValidate() このメソッドは、バリデーションの開始前に呼び出されます。 yii\base\Model
behaviors() このコンポーネントが振る舞うべきビヘイビアのリストを返します。 yii\base\Component
canGetProperty() プロパティを読み取れるかどうかを示す値を返します。 yii\db\BaseActiveRecord
canSetOldAttribute() 古い名前付き属性を設定できるかどうかを返します。 yii\db\BaseActiveRecord
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\db\BaseActiveRecord
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
clearErrors() すべての属性または単一の属性のエラーを削除します。 yii\base\Model
createValidators() rules() で指定されたバリデーションルールに基づいてバリデーターオブジェクトを作成します。 yii\base\Model
delete() このアクティブレコードに対応するテーブル行を削除します。 yii\db\BaseActiveRecord
deleteAll() 指定された条件を使用してテーブル内の行を削除します。 yii\db\BaseActiveRecord
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
equals() 指定されたアクティブレコードが現在のアクティブレコードと同じであるかどうかを示す値を返します。 yii\db\BaseActiveRecord
extraFields() toArray() によってさらに展開して返される可能性のあるフィールドのリストを返します。 yii\db\BaseActiveRecord
fields() 特定のフィールドが指定されていない場合、toArray() によってデフォルトで返される必要があるフィールドのリストを返します。 yii\db\BaseActiveRecord
find() クエリの目的で yii\db\ActiveQueryInterface インスタンスを作成します。 yii\db\ActiveRecordInterface
findAll() 指定された主キー値または一連の列の値に一致するアクティブレコードモデルのリストを返します。 yii\db\BaseActiveRecord
findOne() 主キーまたは列値の配列によって、単一のアクティブレコードモデルインスタンスを返します。 yii\db\BaseActiveRecord
formName() このモデルクラスが使用する必要があるフォーム名を返します。 yii\base\Model
generateAttributeLabel() 指定された属性名に基づいて、ユーザーフレンドリーな属性ラベルを生成します。 yii\base\Model
getActiveValidators() 現在の $scenario に適用可能なバリデーターを返します。 yii\base\Model
getAttribute() 名前付き属性の値を返します。 yii\db\BaseActiveRecord
getAttributeHint() 指定された属性のテキストヒントを返します。 yii\db\BaseActiveRecord
getAttributeLabel() 指定された属性のテキストラベルを返します。 yii\db\BaseActiveRecord
getAttributes() 属性値を返します。 yii\base\Model
getBehavior() 名前付きビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
getDb() このARクラスで使用されている接続を返します。 yii\db\ActiveRecordInterface
getDirtyAttributes() ロードまたは最後に保存されてから変更された属性値を返します。 yii\db\BaseActiveRecord
getErrorSummary() すべての属性のエラーを一次元配列として返します。 yii\base\Model
getErrors() すべての属性または単一の属性のエラーを返します。 yii\base\Model
getFirstError() 指定された属性の最初のエラーを返します。 yii\base\Model
getFirstErrors() モデル内のすべての属性の最初のエラーを返します。 yii\base\Model
getIsNewRecord() 現在のレコードが新規かどうかを示す値を返します。 yii\db\BaseActiveRecord
getIterator() モデル内の属性を走査するためのイテレータを返します。 yii\base\Model
getOldAttribute() 指定された属性の古い値を返します。 yii\db\BaseActiveRecord
getOldAttributes() 古い属性値を返します。 yii\db\BaseActiveRecord
getOldPrimaryKey() 古い主キー値を返します。 yii\db\BaseActiveRecord
getPrimaryKey() 主キー値を返します。 yii\db\BaseActiveRecord
getRelatedRecords() 設定済みの関連レコードをすべて返します。 yii\db\BaseActiveRecord
getRelation() 指定された名前の関連オブジェクトを返します。 yii\db\BaseActiveRecord
getScenario() このモデルが使用されているシナリオを返します。 yii\base\Model
getValidators() rules()で宣言されているすべてのバリデーターを返します。 yii\base\Model
hasAttribute() モデルに指定された名前の属性があるかどうかを示す値を返します。 yii\db\BaseActiveRecord
hasErrors() 検証エラーがあるかどうかを示す値を返します。 yii\base\Model
hasEventHandlers() 指定された名前のイベントにハンドラーがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMany() has-many リレーションを宣言します。 yii\db\BaseActiveRecord
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasOne() has-one リレーションを宣言します。 yii\db\BaseActiveRecord
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\db\BaseActiveRecord
insert() このレコードの属性値を使用して、データベースにレコードを挿入します。 yii\db\ActiveRecordInterface
instance() メタ情報を取得するために使用できる静的クラスインスタンスを返します。 yii\base\StaticInstanceTrait
instantiate() アクティブレコードインスタンスを作成します。 yii\db\BaseActiveRecord
isAttributeActive() 現在のシナリオで属性がアクティブかどうかを示す値を返します。 yii\base\Model
isAttributeChanged() 指定された属性が変更されたかどうかを示す値を返します。 yii\db\BaseActiveRecord
isAttributeRequired() 属性が必須かどうかを示す値を返します。 yii\base\Model
isAttributeSafe() 属性が一括代入に対して安全かどうかを示す値を返します。 yii\base\Model
isPrimaryKey() 指定された属性のセットがこのモデルの主キーを表すかどうかを示す値を返します。 yii\db\BaseActiveRecord
isRelationPopulated() 指定されたリレーションがレコードで設定されているかどうかを確認します。 yii\db\BaseActiveRecord
link() 2つのモデル間の関係を確立します。 yii\db\BaseActiveRecord
load() 入力データでモデルを設定します。 yii\base\Model
loadMultiple() エンドユーザーからのデータでモデルのセットを設定します。 yii\base\Model
loadRelations() すでにロードされているプライマリモデルの関連モデルを遅延ロードします。 yii\db\BaseActiveRecord
loadRelationsFor() すでにロードされているプライマリモデルの関連モデルを遅延ロードします。 yii\db\BaseActiveRecord
markAttributeDirty() 属性をダーティとしてマークします。 yii\db\BaseActiveRecord
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
offsetExists() 指定されたオフセットに要素があるかどうかを返します。 yii\db\BaseActiveRecord
offsetGet() 指定されたオフセットにある要素を返します。 yii\base\Model
offsetSet() 指定されたオフセットに要素を設定します。 yii\base\Model
offsetUnset() 指定されたオフセットにある要素の値を null に設定します。 yii\db\BaseActiveRecord
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
onUnsafeAttribute() 安全でない属性が一括代入されているときに、このメソッドが呼び出されます。 yii\base\Model
optimisticLock() オプティミスティックロックを実装するためにロックバージョンを格納する列の名前を返します。 yii\db\BaseActiveRecord
populateRecord() データベース/ストレージからのデータの行を使用してアクティブレコードオブジェクトを設定します。 yii\db\BaseActiveRecord
populateRelation() 指定されたリレーションに関連レコードを設定します。 yii\db\BaseActiveRecord
primaryKey() このARクラスの主キーを返します。 yii\db\ActiveRecordInterface
refresh() このアクティブレコードを最新データで再設定します。 yii\db\BaseActiveRecord
rules() 属性の検証ルールを返します。 yii\base\Model
safeAttributes() 現在のシナリオで一括代入に対して安全な属性名を返します。 yii\base\Model
save() 現在のレコードを保存します。 yii\db\BaseActiveRecord
scenarios() シナリオと対応するアクティブな属性のリストを返します。 yii\base\Model
setAttribute() 指定された属性値を設定します。 yii\db\BaseActiveRecord
setAttributes() 属性値をまとめて設定します。 yii\base\Model
setIsNewRecord() レコードが新規かどうかを示す値を設定します。 yii\db\BaseActiveRecord
setOldAttribute() 指定された属性の古い値を設定します。 yii\db\BaseActiveRecord
setOldAttributes() 古い属性値を設定します。 yii\db\BaseActiveRecord
setScenario() モデルのシナリオを設定します。 yii\base\Model
toArray() モデルを配列に変換します。 yii\base\ArrayableTrait
trigger() イベントをトリガーします。 yii\base\Component
unlink() 2つのモデル間の関係を破棄します。 yii\db\BaseActiveRecord
unlinkAll() 現在のモデルの関係を破棄します。 yii\db\BaseActiveRecord
update() このアクティブレコードの変更を関連するデータベーステーブルに保存します。 yii\db\BaseActiveRecord
updateAll() 指定された属性値と条件を使用して、テーブル全体を更新します。 yii\db\BaseActiveRecord
updateAllCounters() 指定されたカウンターの変更と条件を使用して、テーブル全体を更新します。 yii\db\BaseActiveRecord
updateAttributes() 指定された属性を更新します。 yii\db\BaseActiveRecord
updateCounters() 現在のARオブジェクトの1つまたは複数のカウンター列を更新します。 yii\db\BaseActiveRecord
validate() データ検証を実行します。 yii\base\Model
validateMultiple() 複数のモデルを検証します。 yii\base\Model

保護されたメソッド

継承されたメソッドを非表示

メソッド 説明 定義元
createRelationQuery() has-one または has-many リレーションのクエリインスタンスを作成します。 yii\db\BaseActiveRecord
extractFieldsFor() 指定されたルートフィールドのフィールドコレクションからネストされたフィールドを抽出します。ネストされたフィールドはドット (.) で区切られます。例: "item.id"。前の例では "id" が抽出されます。 yii\base\ArrayableTrait
extractRootFields() ネストされたフィールドからルートフィールド名を抽出します。 yii\base\ArrayableTrait
refreshInternal() 新しくフェッチされたインスタンスからの最新データでこのアクティブレコードを再設定します。 yii\db\BaseActiveRecord
resolveFields() toArray()でどのフィールドを返すことができるかを決定します。 yii\base\ArrayableTrait
updateInternal() yii\db\BaseActiveRecord

イベント

継承されたイベントを非表示

イベント 説明 定義元
EVENT_AFTER_DELETE yii\db\Event レコードが削除された後にトリガーされるイベント。 yii\db\BaseActiveRecord
EVENT_AFTER_FIND yii\db\Event レコードが作成され、クエリ結果で設定された後にトリガーされるイベント。 yii\db\BaseActiveRecord
EVENT_AFTER_INSERT yii\db\AfterSaveEvent レコードが挿入された後にトリガーされるイベント。 yii\db\BaseActiveRecord
EVENT_AFTER_REFRESH yii\db\Event レコードが更新された後にトリガーされるイベント。(バージョン2.0.8以降で使用可能) yii\db\BaseActiveRecord
EVENT_AFTER_UPDATE yii\db\AfterSaveEvent レコードが更新された後にトリガーされるイベント。 yii\db\BaseActiveRecord
EVENT_AFTER_VALIDATE yii\base\Event validate()の最後に発生するイベント yii\base\Model
EVENT_BEFORE_DELETE yii\base\ModelEvent レコードを削除する前にトリガーされるイベント。 yii\db\BaseActiveRecord
EVENT_BEFORE_INSERT yii\base\ModelEvent レコードを挿入する前にトリガーされるイベント。 yii\db\BaseActiveRecord
EVENT_BEFORE_UPDATE yii\base\ModelEvent レコードを更新する前にトリガーされるイベント。 yii\db\BaseActiveRecord
EVENT_BEFORE_VALIDATE yii\base\ModelEvent validate()の開始時に発生するイベント。 yii\base\Model
EVENT_INIT yii\db\Event init()を介してレコードが初期化されたときにトリガーされるイベント。 yii\db\BaseActiveRecord

定数

継承された定数を非表示

定数 説明 定義元
SCENARIO_DEFAULT 'default' デフォルトシナリオの名前。 yii\base\Model

プロパティの詳細

継承されたプロパティを非表示

$dirtyAttributes public property

変更された属性値(名前と値のペア)。

public array $dirtyAttributes null
$isNewRecord public property

レコードが新しいかどうか、save() を呼び出すときに挿入されるべきかどうか。

public boolean $isNewRecord null
$oldAttributes public property

古い属性値(名前と値のペア)。このプロパティの型はゲッターとセッターで異なることに注意してください。詳細については、getOldAttributes()setOldAttributes()を参照してください。

public array $oldAttributes null
$oldPrimaryKey public property

古い主キーの値。主キーが複合である場合、または$asArraytrueの場合、配列(列名=>列値)が返されます。それ以外の場合は文字列が返されます(キー値がnullの場合はnullが返されます)。

public mixed $oldPrimaryKey null
$primaryKey public プロパティ

プライマリキーの値。プライマリキーが複合キーの場合、または $asArraytrue の場合は、配列(カラム名 => カラム値)が返されます。それ以外の場合は文字列が返されます(キー値がnullの場合はnullが返されます)。

public mixed $primaryKey null
$relatedRecords public プロパティ

リレーション名でインデックス付けされた関連レコードの配列。

public array $relatedRecords null

メソッドの詳細

継承されたメソッドを非表示

__call() public メソッド

定義元: yii\base\Component::__call()

クラスメソッドではない名前付きメソッドを呼び出します。

このメソッドは、添付されたビヘイビアに指定された名前のメソッドがあるかどうかを確認し、存在する場合はそれを実行します。

このメソッドは、不明なメソッドが呼び出されたときに暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。

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

メソッド名

$params array

メソッドのパラメータ

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

不明なメソッドを呼び出した場合

                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 メソッド

定義元: yii\base\Model::__clone()

このメソッドは、既存のオブジェクトをクローンすることによってオブジェクトが作成された後に呼び出されます。

古いオブジェクトに添付されているため、すべてのビヘイビアを削除します。

public void __clone ( )

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

            
__construct() public メソッド

定義元: yii\base\BaseObject::__construct()

コンストラクタ。

デフォルトの実装では、次の2つのことを行います。

  • 指定された構成 $config でオブジェクトを初期化します。
  • init() を呼び出します。

このメソッドが子クラスでオーバーライドされている場合、次のことを推奨します。

  • コンストラクタの最後のパラメータは、ここでの $config のように、構成配列にします。
  • コンストラクタの最後に、親の実装を呼び出します。
public void __construct ( $config = [] )
$config array

オブジェクトのプロパティを初期化するために使用される名前と値のペア

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() public メソッド

PHPのゲッターマジックメソッド。

このメソッドは、属性と関連オブジェクトがプロパティのようにアクセスできるようにオーバーライドされています。

getAttribute() も参照してください。

public mixed __get ( $name )
$name string

プロパティ名

return mixed

プロパティの値

throws yii\base\InvalidArgumentException

関係名が間違っている場合

                public function __get($name)
{
    if (array_key_exists($name, $this->_attributes)) {
        return $this->_attributes[$name];
    }
    if ($this->hasAttribute($name)) {
        return null;
    }
    if (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 メソッド

プロパティの値がnullかどうかをチェックします。

このメソッドは、指定された属性が null かどうかをチェックすることにより、親の実装をオーバーライドします。

public boolean __isset ( $name )
$name string

プロパティ名またはイベント名

return boolean

プロパティ値がnullかどうか

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

            
__set() public メソッド

PHPのセッターマジックメソッド。

このメソッドは、AR属性がプロパティのようにアクセスできるようにオーバーライドされています。

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

プロパティ名

$value mixed

プロパティの値

                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 メソッド

コンポーネントのプロパティを null に設定します。

このメソッドは、指定された属性値をクリアすることにより、親の実装をオーバーライドします。

public void __unset ( $name )
$name string

プロパティ名またはイベント名

                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 メソッド

定義元: yii\base\Model::activeAttributes()

現在のシナリオでバリデーションの対象となる属性名を返します。

public string[] activeAttributes ( )
return string[]

安全な属性名

                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 メソッド

定義元: yii\base\Model::addError()

指定された属性に新しいエラーを追加します。

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

属性名

$error string

新しいエラーメッセージ

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

            
addErrors() public メソッド (バージョン 2.0.2 以降)

定義元: yii\base\Model::addErrors()

エラーのリストを追加します。

public void addErrors ( array $items )
$items array

エラーのリスト。配列のキーは属性名である必要があります。配列の値はエラーメッセージである必要があります。属性に複数のエラーがある場合、これらのエラーは配列形式で指定する必要があります。このパラメータの値として、getErrors() の結果を使用できます。

                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);
        }
    }
}

            
afterDelete() public メソッド

このメソッドは、レコードを削除した後に呼び出されます。

デフォルトの実装では、EVENT_AFTER_DELETE イベントを発生させます。レコードが削除された後の後処理を行うために、このメソッドをオーバーライドすることができます。イベントが正しく発生するように、親の実装を必ず呼び出してください。

public void afterDelete ( )

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

            
afterFind() public メソッド

このメソッドは、ARオブジェクトが作成され、クエリ結果が設定されたときに呼び出されます。

デフォルトの実装では、EVENT_AFTER_FIND イベントをトリガーします。このメソッドをオーバーライドする場合は、イベントがトリガーされるように、親の実装を必ず呼び出してください。

public void afterFind ( )

                public function afterFind()
{
    $this->trigger(self::EVENT_AFTER_FIND);
}

            
afterRefresh() public メソッド (バージョン 2.0.8 から利用可能)

このメソッドは、ARオブジェクトがリフレッシュされたときに呼び出されます。

デフォルトの実装では、EVENT_AFTER_REFRESH イベントをトリガーします。このメソッドをオーバーライドする場合は、イベントがトリガーされるように、親の実装を必ず呼び出してください。

public void afterRefresh ( )

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

            
afterSave() public メソッド

このメソッドは、レコードの挿入または更新の最後に呼び出されます。

デフォルトの実装では、$inserttrue の場合は EVENT_AFTER_INSERT イベントをトリガーし、$insertfalse の場合は EVENT_AFTER_UPDATE イベントをトリガーします。使用されるイベントクラスは yii\db\AfterSaveEvent です。このメソッドをオーバーライドする場合は、イベントがトリガーされるように、親の実装を必ず呼び出してください。

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

レコードの挿入中にこのメソッドが呼び出されたかどうか。false の場合は、レコードの更新中にメソッドが呼び出されたことを意味します。

$changedAttributes array

変更され保存された属性の古い値。このパラメータを使用して、パスワードが変更されたときにメールを送信したり、すべての変更を追跡する監査証跡を実装するなど、行われた変更に基づいてアクションを実行できます。$changedAttributes は古い属性値を返し、アクティブレコード ($this) にはすでに新しい更新された値が入っています。

デフォルトでは自動的な型変換は行われないことに注意してください。属性の型変換を容易にするには、yii\behaviors\AttributeTypecastBehavior を使用できます。https://yii.dokyumento.jp/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 メソッド

定義元: yii\base\Model::afterValidate()

このメソッドは、バリデーションの終了後に呼び出されます。

デフォルトの実装では、afterValidate イベントが発生します。検証後の後処理を行うために、このメソッドをオーバーライドすることができます。イベントが発生するように、親の実装を呼び出す必要があります。

public void afterValidate ( )

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

            
attachBehavior() public メソッド

定義元: yii\base\Component::attachBehavior()

このコンポーネントにビヘイビアをアタッチします。

このメソッドは、指定された構成に基づいてビヘイビアオブジェクトを作成します。その後、yii\base\Behavior::attach() メソッドを呼び出すことで、ビヘイビアオブジェクトがこのコンポーネントにアタッチされます。

detachBehavior() も参照してください。

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

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

ビヘイビアの構成。以下のようなものが使用できます。

  • yii\base\Behavior オブジェクト
  • ビヘイビアクラスを指定する文字列
  • Yii::createObject() に渡してビヘイビアオブジェクトを作成するためのオブジェクト構成配列。
return yii\base\Behavior

ビヘイビアオブジェクト

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

            
attachBehaviors() public メソッド

定義元: yii\base\Component::attachBehaviors()

コンポーネントにビヘイビアのリストをアタッチします。

各ビヘイビアは、名前でインデックス付けされ、yii\base\Behavior オブジェクト、ビヘイビアクラスを指定する文字列、またはビヘイビアを作成するための構成配列である必要があります。

attachBehavior() も参照してください。

public void attachBehaviors ( $behaviors )
$behaviors array

コンポーネントにアタッチされるビヘイビアのリスト

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

            
attributeHints() public メソッド (バージョン 2.0.4 から利用可能)

定義元: yii\base\Model::attributeHints()

属性ヒントを返します。

属性ヒントは、主に表示目的で使用されます。たとえば、属性 isPublic がある場合、属性の意味をユーザーフレンドリーに説明し、エンドユーザーに表示できるヒント Whether the post should be visible for not logged in users を宣言できます。

ラベルとは異なり、明示的な宣言が省略されている場合、ヒントは生成されません。

親クラスで定義されたヒントを継承するには、子クラスは array_merge() などの関数を使用して、親ヒントと子ヒントをマージする必要があることに注意してください。

public array attributeHints ( )
return array

属性ヒント (name => hint)

                public function attributeHints()
{
    return [];
}

            
attributeLabels() public メソッド

定義元: yii\base\Model::attributeLabels()

属性ラベルを返します。

属性ラベルは、主に表示目的で使用されます。たとえば、属性 firstName がある場合、よりユーザーフレンドリーでエンドユーザーに表示できるラベル First Name を宣言できます。

デフォルトでは、属性ラベルは generateAttributeLabel() を使用して生成されます。このメソッドを使用すると、属性ラベルを明示的に指定できます。

親クラスで定義されたラベルを継承するには、子クラスは array_merge() などの関数を使用して、親ラベルと子ラベルをマージする必要があることに注意してください。

generateAttributeLabel() も参照してください。

public array attributeLabels ( )
return array

属性ラベル(name => label)

                public function attributeLabels()
{
    return [];
}

            
attributes() public メソッド

定義元: yii\base\Model::attributes()

属性名のリストを返します。

デフォルトでは、このメソッドはクラスのすべての public 非 static プロパティを返します。デフォルトの動作を変更するには、このメソッドをオーバーライドできます。

public string[] attributes ( )
return string[]

属性名のリスト。

                public function attributes()
{
    $class = new ReflectionClass($this);
    $names = [];
    foreach ($class->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
        if (!$property->isStatic()) {
            $names[] = $property->getName();
        }
    }
    return $names;
}

            
beforeDelete() public メソッド

このメソッドは、レコードを削除する前に呼び出されます。

デフォルトの実装では、EVENT_BEFORE_DELETE イベントが発生します。このメソッドをオーバーライドする場合は、次のように親の実装を必ず呼び出してください。

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

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

レコードを削除するかどうか。デフォルトは true です。

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

            
beforeSave() public メソッド

このメソッドは、レコードの挿入または更新の開始時に呼び出されます。

デフォルトの実装では、$inserttrue の場合は EVENT_BEFORE_INSERT イベントが、$insertfalse の場合は EVENT_BEFORE_UPDATE イベントが発生します。このメソッドをオーバーライドする場合は、次のように親の実装を必ず呼び出してください。

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

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

レコードの挿入中にこのメソッドが呼び出されたかどうか。false の場合は、レコードの更新中にメソッドが呼び出されたことを意味します。

return boolean

挿入または更新を続行するかどうか。 false の場合、挿入または更新はキャンセルされます。

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

            
beforeValidate() public メソッド

定義元: yii\base\Model::beforeValidate()

このメソッドは、バリデーションの開始前に呼び出されます。

デフォルトの実装では、beforeValidate イベントが発生します。バリデーションの前に予備チェックを行うために、このメソッドをオーバーライドすることができます。イベントが発生するように、親の実装を呼び出すことを確認してください。

public boolean beforeValidate ( )
return boolean

バリデーションを実行するかどうか。デフォルトは true です。false が返された場合、バリデーションは停止し、モデルは無効とみなされます。

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

            
behaviors() public メソッド

定義元: yii\base\Component::behaviors()

このコンポーネントが振る舞うべきビヘイビアのリストを返します。

子クラスは、動作させたいビヘイビアを指定するために、このメソッドをオーバーライドできます。

このメソッドの戻り値は、ビヘイビア名でインデックス付けされたビヘイビアオブジェクトまたは構成の配列である必要があります。ビヘイビアの構成は、ビヘイビアクラスを指定する文字列、または次の構造の配列のいずれかになります。

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

ビヘイビアクラスは yii\base\Behavior を継承する必要があることに注意してください。ビヘイビアは、名前付きまたは匿名でアタッチできます。配列キーとして名前を使用した場合、この名前を使用して、後で getBehavior() を使用してビヘイビアを取得したり、detachBehavior() を使用してデタッチしたりできます。匿名のビヘイビアは、取得またはデタッチできません。

このメソッドで宣言されたビヘイビアは、自動的に(必要に応じて)コンポーネントにアタッチされます。

public array behaviors ( )
return array

ビヘイビアの構成。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public メソッド

プロパティを読み取れるかどうかを示す値を返します。

プロパティは、次の場合は読み取ることができます。

  • クラスに、指定された名前に関連付けられた getter メソッドがある場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバー変数がある場合($checkVars が true の場合)。
  • アタッチされたビヘイビアに、指定された名前の読み取り可能なプロパティがある場合($checkBehaviors が true の場合)。
public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティが読み取り可能かどうか

                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;
    }
}

            
canSetOldAttribute() public メソッド

古い名前付き属性を設定できるかどうかを返します。

setOldAttribute() も参照してください。

public boolean canSetOldAttribute ( $name )
$name string

属性名

return boolean

古い属性を設定できるかどうか

                public function canSetOldAttribute($name)
{
    return (isset($this->_oldAttributes[$name]) || $this->hasAttribute($name));
}

            
canSetProperty() public メソッド

プロパティを設定できるかどうかを示す値を返します。

プロパティは、次の場合は書き込むことができます。

  • クラスに、指定された名前に関連付けられた setter メソッドがある場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバー変数がある場合($checkVars が true の場合)。
  • アタッチされたビヘイビアに、指定された名前の書き込み可能なプロパティがある場合($checkBehaviors が true の場合)。
public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティが書き込み可能かどうか

                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 メソッド
2.0.14 以降非推奨。PHP >=5.5 では、::class を代わりに使用してください。

定義元: yii\base\BaseObject::className()

このクラスの完全修飾名を返します。

public static string className ( )
return string

このクラスの完全修飾名。

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

            
clearErrors() public メソッド

定義元: yii\base\Model::clearErrors()

すべての属性または単一の属性のエラーを削除します。

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

属性名。すべての属性のエラーを削除する場合は null を使用します。

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

            
createRelationQuery() protected メソッド (バージョン 2.0.12 から利用可能)

has-one または has-many リレーションのクエリインスタンスを作成します。

参考

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

関連レコードのクラス名。

$link array

主キーと外部キーの制約。

$multiple boolean

このクエリが複数のレコードへのリレーションを表すかどうか。

return yii\db\ActiveQueryInterface

リレーショナルクエリオブジェクト。

                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 メソッド

定義元: yii\base\Model::createValidators()

rules() で指定されたバリデーションルールに基づいてバリデーターオブジェクトを作成します。

getValidators() とは異なり、このメソッドが呼び出されるたびに、新しいバリデーターのリストが返されます。

public ArrayObject createValidators ( )
return ArrayObject

バリデーター

throws yii\base\InvalidConfigException

いずれかのバリデーションルールの設定が無効な場合

                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 メソッド

このアクティブレコードに対応するテーブル行を削除します。

このメソッドは、以下のステップを順番に実行します。

  1. beforeDelete() を呼び出します。メソッドが false を返した場合、残りのステップをスキップします。
  2. データベースからレコードを削除します。
  3. afterDelete() を呼び出します。

上記のステップ 1 と 3 では、EVENT_BEFORE_DELETE および EVENT_AFTER_DELETE という名前のイベントが、対応するメソッドによって発生します。

public integer|false delete ( )
return integer|false

削除された行数。何らかの理由で削除が失敗した場合は false です。削除の実行が成功した場合でも、削除された行数が 0 になる可能性があることに注意してください。

throws yii\db\StaleObjectException

オプティミスティックロックが有効になっていて、削除されるデータが古い場合。

throws yii\db\Exception

削除に失敗した場合。

                public function delete()
{
    $result = false;
    if ($this->beforeDelete()) {
        // 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->_oldAttributes = null;
        $this->afterDelete();
    }
    return $result;
}

            
deleteAll() public static メソッド

指定された条件を使用してテーブル内の行を削除します。

警告: 条件を指定しない場合、このメソッドはテーブル内のすべての行を削除します。

例: ステータスが 3 のすべての顧客を削除するには

Customer::deleteAll('status = 3');
public static integer deleteAll ( $condition null )
$condition string|array|null

DELETE SQL の WHERE 部分に配置される条件。このパラメーターの指定方法については、yii\db\Query::where() を参照してください。

return integer

削除された行数

throws yii\base\NotSupportedException

オーバーライドされていない場合。

                public static function deleteAll($condition = null)
{
    throw new NotSupportedException(__METHOD__ . ' is not supported.');
}

            
detachBehavior() public メソッド

定義元: yii\base\Component::detachBehavior()

コンポーネントからビヘイビアをデタッチします。

ビヘイビアの yii\base\Behavior::detach() メソッドが呼び出されます。

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

ビヘイビアの名前。

return yii\base\Behavior|null

デタッチされたビヘイビア。ビヘイビアが存在しない場合は Null。

                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 メソッド

定義元: yii\base\Component::detachBehaviors()

コンポーネントからすべてのビヘイビアをデタッチします。

public void detachBehaviors ( )

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

            
ensureBehaviors() public メソッド

定義元: yii\base\Component::ensureBehaviors()

behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。

public void ensureBehaviors ( )

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

            
equals() public メソッド

指定されたアクティブレコードが現在のアクティブレコードと同じであるかどうかを示す値を返します。

比較は、2 つのアクティブレコードのテーブル名と主キー値を比較することによって行われます。レコードのいずれかが 新規である場合も、等しくないものとみなされます。

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

比較対象のレコード

return boolean

2 つのアクティブレコードが同じデータベーステーブルの同じ行を参照しているかどうか。

                public function equals($record)
{
    if ($this->getIsNewRecord() || $record->getIsNewRecord()) {
        return false;
    }
    return get_class($this) === get_class($record) && $this->getPrimaryKey() === $record->getPrimaryKey();
}

            
extraFields() public メソッド

toArray() によってさらに展開して返される可能性のあるフィールドのリストを返します。

デフォルトの実装では、このレコードに投入されたリレーションの名前を返します。

このメソッドは、fields() に似ていますが、このメソッドによって返されるフィールドのリストは、デフォルトでは toArray() によって返されない点が異なります。toArray() を呼び出すときに展開するフィールド名を明示的に指定した場合にのみ、それらの値がエクスポートされます。

デフォルトの実装では、空の配列が返されます。

このメソッドをオーバーライドして、コンテキスト情報 (例: 現在のアプリケーションユーザー) に基づいて展開可能なフィールドのリストを返すことができます。

public array extraFields ( )
return array

展開可能なフィールド名またはフィールド定義のリスト。戻り値の形式については、fields() を参照してください。

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

            
extractFieldsFor() protected メソッド (バージョン 2.0.14 から利用可能)

定義元: yii\base\ArrayableTrait::extractFieldsFor()

指定されたルートフィールドのフィールドコレクションからネストされたフィールドを抽出します。ネストされたフィールドはドット (.) で区切られます。例: "item.id"。前の例では "id" が抽出されます。

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

抽出がリクエストされたフィールド

$rootField string

ネストされたフィールドを抽出するルートフィールド

return array

指定されたフィールドに対して抽出されたネストされたフィールド

                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 メソッド (バージョン 2.0.14 から利用可能)

定義場所: yii\base\ArrayableTrait::extractRootFields()

ネストされたフィールドからルートフィールド名を抽出します。

ネストされたフィールドはドット (.) で区切られます。例: "item.id" 前述の例では "item" が抽出されます。

protected array extractRootFields ( array $fields )
$fields array

抽出がリクエストされたフィールド

return array

指定されたネストされたフィールドから抽出されたルートフィールド

                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);
}

            
fields() public メソッド

特定のフィールドが指定されていない場合、toArray() によってデフォルトで返される必要があるフィールドのリストを返します。

デフォルトの実装では、このレコードに値が設定された列の名前が返されます。

フィールドは、toArray() によって返される配列内の名前付き要素です。

このメソッドは、フィールド名またはフィールド定義の配列を返す必要があります。 前者の場合、フィールド名は、その値がフィールド値として使用されるオブジェクトのプロパティ名として扱われます。 後者の場合、配列のキーはフィールド名であり、配列の値は、オブジェクトのプロパティ名または対応するフィールド値を返す PHP の callable のいずれかである対応するフィールド定義である必要があります。 callable のシグネチャは次のようになります。

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

たとえば、次のコードは4つのフィールドを宣言します。

  • email: フィールド名はプロパティ名 email と同じです。
  • firstName および lastName: フィールド名は firstName および lastName で、それらの値は first_name および last_name プロパティから取得されます。
  • fullName: フィールド名は fullName です。その値は、first_namelast_name を連結することによって取得されます。
return [
    'email',
    'firstName' => 'first_name',
    'lastName' => 'last_name',
    'fullName' => function ($model) {
        return $model->first_name . ' ' . $model->last_name;
    },
];

このメソッドでは、コンテキスト情報に基づいて異なるフィールドのリストを返すこともできます。たとえば、$scenario または現在のアプリケーションユーザーの権限に応じて、表示されるフィールドの異なるセットを返したり、一部のフィールドをフィルターアウトしたりできます。

このメソッドのデフォルトの実装では、同じ属性名でインデックスされた attributes() が返されます。

public array fields ( )
return array

フィールド名またはフィールド定義のリスト。

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

            
find() public abstract static メソッド

定義場所: yii\db\ActiveRecordInterface::find()

クエリの目的で yii\db\ActiveQueryInterface インスタンスを作成します。

返された yii\db\ActiveQueryInterface インスタンスは、one() または all() が呼び出されて、データが入力された ActiveRecord インスタンスが返される前に、yii\db\ActiveQueryInterface で定義されたメソッドを呼び出すことによってさらにカスタマイズできます。 例:

// 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();

このメソッドは、リレーショナルクエリを作成するために、yii\db\BaseActiveRecord::hasOne() および yii\db\BaseActiveRecord::hasMany() によっても呼び出されます。

このメソッドをオーバーライドして、カスタマイズされたクエリを返すことができます。 例:

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

次のコードは、すべてのクエリにデフォルトの条件を適用する方法を示しています

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 abstract static yii\db\ActiveQueryInterface find ( )
return yii\db\ActiveQueryInterface

新しく作成された yii\db\ActiveQueryInterface インスタンス。

                public static function find();

            
findAll() public static メソッド

指定された主キー値または一連の列の値に一致するアクティブレコードモデルのリストを返します。

このメソッドは以下を受け入れます。

  • スカラー値 (整数または文字列): 単一の主キー値でクエリし、対応するレコードを含む配列を返します (見つからない場合は空の配列)。
  • 非連想配列: 主キー値のリストでクエリし、対応するレコードを返します (見つからない場合は空の配列)。空の条件は、主キーの検索として解釈されるため、空の WHERE 条件ではなく、空の結果になることに注意してください。
  • 名前と値のペアの連想配列: 属性値のセットでクエリし、それらすべてに一致するレコードの配列を返します (見つからない場合は空の配列)。 ['id' => 1, 2] は非連想配列として扱われることに注意してください。 SQL DBMS では列名が現在のレコードテーブル列に限定されるか、それ以外の場合は単純なフィルター条件に限定されるようにフィルター処理されます。
  • yii\db\Expression: 式は直接使用されます (@since 2.0.37)。

このメソッドは自動的に all() メソッドを呼び出し、ActiveRecord インスタンスの配列を返します。

注意: これは省略されたメソッドであるため、['!=', 'id', 1] のようなより複雑な条件を使用しても機能しません。 より複雑な条件を指定する必要がある場合は、find()where() と組み合わせて使用してください。

使用例については、次のコードを参照してください。

// 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();

ユーザー入力をこのメソッドに渡す必要がある場合は、入力値がスカラーであるか、配列条件の場合、配列構造が外部から変更できないことを確認してください。

// 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

主キー値または列値のセット

return static[]

ActiveRecord インスタンスの配列。一致するものがなければ空の配列。

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

            
findOne() public static メソッド

主キーまたは列値の配列によって、単一のアクティブレコードモデルインスタンスを返します。

このメソッドは以下を受け入れます。

  • スカラー値 (整数または文字列): 単一の主キー値でクエリし、対応するレコードを返します (見つからない場合は null)。
  • 非連想配列: 主キー値のリストでクエリし、最初のレコードを返します (見つからない場合は null)。
  • 名前と値のペアの連想配列: 属性値のセットでクエリし、それらすべてに一致する単一のレコードを返します (見つからない場合は null)。 ['id' => 1, 2] は非連想配列として扱われることに注意してください。 SQL DBMS では列名が現在のレコードテーブル列に限定されるか、それ以外の場合は単純なフィルター条件に限定されるようにフィルター処理されます。
  • yii\db\Expression: 式は直接使用されます (@since 2.0.37)。

このメソッドは自動的に one() メソッドを呼び出し、ActiveRecord インスタンスを返します。

注意: これは省略されたメソッドであるため、['!=', 'id', 1] のようなより複雑な条件を使用しても機能しません。 より複雑な条件を指定する必要がある場合は、find()where() と組み合わせて使用してください。

使用例については、次のコードを参照してください。

// 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();

ユーザー入力をこのメソッドに渡す必要がある場合は、入力値がスカラーであるか、配列条件の場合、配列構造が外部から変更できないことを確認してください。

// 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

主キー値または列値のセット

return static|null

条件に一致する ActiveRecord インスタンス。一致するものがなければ null

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

            
formName() public メソッド

定義場所: yii\base\Model::formName()

このモデルクラスが使用する必要があるフォーム名を返します。

フォーム名は、主に yii\widgets\ActiveForm がモデル内の属性の入力フィールドに名前を付ける方法を決定するために使用されます。フォーム名が「A」で、属性名が「b」の場合、対応する入力名は「A[b]」になります。フォーム名が空の文字列の場合、入力名は「b」になります。

上記の命名スキーマの目的は、複数の異なるモデルを含むフォームの場合、各モデルの属性が POST データのサブ配列にグループ化され、それらを区別しやすくすることです。

デフォルトでは、このメソッドは、フォーム名としてモデルクラス名 (名前空間部分を除く) を返します。モデルが異なるフォームで使用されている場合は、オーバーライドできます。

load() も参照してください。

public string formName ( )
return string

このモデルクラスのフォーム名。

throws yii\base\InvalidConfigException

フォームが匿名クラスで定義され、formName() メソッドがオーバーライドされていない場合。

                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 メソッド

定義場所: yii\base\Model::generateAttributeLabel()

指定された属性名に基づいて、ユーザーフレンドリーな属性ラベルを生成します。

これは、アンダースコア、ダッシュ、ドットを空白に置き換え、各単語の最初の文字を大文字にすることで行われます。たとえば、「department_name」または「DepartmentName」は「Department Name」を生成します。

public string generateAttributeLabel ( $name )
$name string

カラム名

return string

属性ラベル

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

            
getActiveValidators() public メソッド

定義元: yii\base\Model::getActiveValidators()

現在の $scenario に適用可能なバリデーターを返します。

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

適用可能なバリデーターを返す属性の名前。これがnullの場合、モデル内のすべての属性のバリデーターが返されます。

return yii\validators\Validator[]

現在の $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 メソッド

名前付き属性の値を返します。

このレコードがクエリの結果であり、属性がロードされていない場合は、nullが返されます。

参照: hasAttribute()

public mixed getAttribute ( $name )
$name string

属性名

return mixed

属性値。属性が設定されていないか存在しない場合はnull

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

            
getAttributeHint() public メソッド (バージョン 2.0.4 から利用可能)

指定された属性のテキストヒントを返します。

属性がrelatedModel.attributeのように見える場合、属性は関連モデルから取得されます。

参照: attributeHints()

public string getAttributeHint ( $attribute )
$attribute string

属性名

return string

属性ヒント

                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 メソッド

指定された属性のテキストラベルを返します。

属性は、関連モデルからラベルを取得するため、またはこのモデルが関連モデルで定義されたラベルをオーバーライドできるように、ドット形式で指定できます。たとえば、属性が 'relatedModel1.relatedModel2.attr' として指定されている場合、関数は次の順序で最初に見つけることができるラベル定義を返します。

  • このモデルのattributeLabels()で定義された 'relatedModel1.relatedModel2.attr' のラベル。
  • このモデルの関連 'relatedModel1' によって表される関連モデルで定義された 'relatedModel2.attr' のラベル。
  • 'relatedModel1' の関連である 'relatedModel2' の関連によって表される関連モデルで定義された 'attr' のラベル。ラベル定義が見つからなかった場合は、$this->generateAttributeLabel('relatedModel1.relatedModel2.attr') の値が返されます。

参考

public string getAttributeLabel ( $attribute )
$attribute string

属性名

return string

属性ラベル

                public function getAttributeLabel($attribute)
{
    $model = $this;
    $modelAttribute = $attribute;
    for (;;) {
        $labels = $model->attributeLabels();
        if (isset($labels[$modelAttribute])) {
            return $labels[$modelAttribute];
        }
        $parts = explode('.', $modelAttribute, 2);
        if (count($parts) < 2) {
            break;
        }
        list ($relationName, $modelAttribute) = $parts;
        if ($model->isRelationPopulated($relationName) && $model->$relationName instanceof self) {
            $model = $model->$relationName;
        } else {
            try {
                $relation = $model->getRelation($relationName);
            } catch (InvalidArgumentException $e) {
                break;
            }
            /* @var $modelClass ActiveRecordInterface */
            $modelClass = $relation->modelClass;
            $model = $modelClass::instance();
        }
    }
    return $this->generateAttributeLabel($attribute);
}

            
getAttributes() public メソッド

定義元: yii\base\Model::getAttributes()

属性値を返します。

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

値を返す必要のある属性のリスト。デフォルトはnullで、attributes()にリストされているすべての属性が返されることを意味します。配列の場合、配列内の属性のみが返されます。

$except array

値を返さない属性のリスト。

return array

属性値 (名前 => 値)。

                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 メソッド

定義元: yii\base\Component::getBehavior()

名前付きビヘイビアオブジェクトを返します。

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

ビヘイビア名

return yii\base\Behavior|null

ビヘイビアオブジェクト。ビヘイビアが存在しない場合はnull

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

            
getBehaviors() public メソッド

定義元: yii\base\Component::getBehaviors()

このコンポーネントにアタッチされているすべてのビヘイビアを返します。

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

このコンポーネントにアタッチされたビヘイビアのリスト

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

            
getDb() public abstract static メソッド

定義元: yii\db\ActiveRecordInterface::getDb()

このARクラスで使用されている接続を返します。

public abstract static mixed getDb ( )
return mixed

この AR クラスで使用されるデータベース接続。

                public static function getDb();

            
getDirtyAttributes() public メソッド

ロードまたは最後に保存されてから変更された属性値を返します。

新しい値と古い値の比較は、===を使用して同一の値に対して行われます。

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

最近変更された場合に値を返す属性の名前。nullの場合、attributes()が使用されます。

return array

変更された属性値(名前と値のペア)

                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->isValueDifferent($value, $this->_oldAttributes[$name]))) {
                $attributes[$name] = $value;
            }
        }
    }
    return $attributes;
}

            
getErrorSummary() public メソッド (バージョン 2.0.14 から利用可能)

定義元: yii\base\Model::getErrorSummary()

すべての属性のエラーを一次元配列として返します。

参考

public array getErrorSummary ( $showAllErrors )
$showAllErrors boolean

ブール値。trueに設定すると、各属性のすべてのエラーメッセージが表示されます。それ以外の場合は、各属性の最初のエラーメッセージのみが表示されます。

return array

1次元配列としてのすべての属性のエラー。エラーがない場合は空の配列が返されます。

                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 メソッド

定義元: yii\base\Model::getErrors()

すべての属性または単一の属性のエラーを返します。

参考

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

属性名。すべての属性のエラーを取得するには、nullを使用します。

return array

すべての属性または指定された属性のエラー。エラーがない場合は空の配列が返されます。詳細については、getErrors()を参照してください。すべての属性のエラーを返す場合、結果は次のような2次元配列になります。

[
    '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 メソッド

定義元: yii\base\Model::getFirstError()

指定された属性の最初のエラーを返します。

参考

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

属性名。

return string|null

エラーメッセージ。エラーがない場合は null が返されます。

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

            
getFirstErrors() public メソッド

定義元: yii\base\Model::getFirstErrors()

モデル内のすべての属性の最初のエラーを返します。

参考

public array getFirstErrors ( )
return array

最初のエラー。配列のキーは属性名で、配列の値は対応するエラーメッセージです。エラーがない場合は空の配列が返されます。

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

            
getIsNewRecord() public メソッド

現在のレコードが新規かどうかを示す値を返します。

public boolean getIsNewRecord ( )
return boolean

レコードが新しいかどうか、save() を呼び出すときに挿入されるべきかどうか。

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

            
getIterator() public メソッド

定義元: yii\base\Model::getIterator()

モデル内の属性を走査するためのイテレータを返します。

このメソッドは、インターフェース IteratorAggregate で必要です。

public ArrayIterator getIterator ( )
return ArrayIterator

リスト内の項目をトラバースするためのイテレータ。

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

            
getOldAttribute() public メソッド

指定された属性の古い値を返します。

このレコードがクエリの結果であり、属性がロードされていない場合は、nullが返されます。

参照: hasAttribute()

public mixed getOldAttribute ( $name )
$name string

属性名

return mixed

古い属性値。属性が以前にロードされていない場合、または存在しない場合は null

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

            
getOldAttributes() public メソッド

古い属性値を返します。

public array getOldAttributes ( )
return array

古い属性値 (名前と値のペア)

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

            
getOldPrimaryKey() public メソッド

古い主キー値を返します。

これは、find メソッド (例: find()、findOne()) を実行した後にレコードに設定されるプライマリキーの値を指します。プライマリキー属性に異なる値が手動で割り当てられた場合でも、値は変更されません。

public mixed getOldPrimaryKey ( $asArray false )
$asArray boolean

プライマリキーの値を配列として返すかどうか。true の場合、戻り値はカラム名をキーとし、カラム値を値とする配列になります。これが false (デフォルト) の場合、非複合プライマリキーにはスカラー値が返されます。

return mixed

古い主キーの値。主キーが複合である場合、または$asArraytrueの場合、配列(列名=>列値)が返されます。それ以外の場合は文字列が返されます(キー値がnullの場合はnullが返されます)。

throws yii\db\Exception

AR モデルにプライマリキーがない場合

                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 メソッド

主キー値を返します。

public mixed getPrimaryKey ( $asArray false )
$asArray boolean

プライマリキーの値を配列として返すかどうか。true の場合、戻り値はカラム名をキーとし、カラム値を値とする配列になります。複合プライマリキーの場合、このパラメータ値に関係なく、常に配列が返されることに注意してください。

return mixed

プライマリキーの値。プライマリキーが複合キーの場合、または $asArraytrue の場合は、配列(カラム名 => カラム値)が返されます。それ以外の場合は文字列が返されます(キー値がnullの場合は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 メソッド

設定済みの関連レコードをすべて返します。

getRelation() も参照してください。

public array getRelatedRecords ( )
return array

リレーション名でインデックス付けされた関連レコードの配列。

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

            
getRelation() public メソッド

指定された名前の関連オブジェクトを返します。

リレーションは、yii\db\ActiveQueryInterface オブジェクトを返すゲッターメソッドによって定義されます。これは、Active Record クラス自体、またはそのビヘイビアのいずれかで宣言できます。

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

リレーション名。例: getOrders() メソッドで定義されたリレーションの場合 orders (大文字と小文字を区別)。

$throwException boolean

リレーションが存在しない場合に例外をスローするかどうか。

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

リレーショナルクエリオブジェクト。リレーションが存在せず、$throwExceptionfalse の場合は、null が返されます。

throws yii\base\InvalidArgumentException

名前付きリレーションが存在しない場合。

                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 メソッド

定義元: yii\base\Model::getScenario()

このモデルが使用されているシナリオを返します。

シナリオは、検証の実行方法と、大量に割り当てることができる属性に影響します。

public string getScenario ( )
return string

このモデルが属するシナリオ。デフォルトは SCENARIO_DEFAULT です。

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

            
getValidators() public メソッド

定義元: yii\base\Model::getValidators()

rules()で宣言されているすべてのバリデーターを返します。

このメソッドは、getActiveValidators() とは異なり、後者は現在の $scenario に適用可能なバリデーターのみを返します。

このメソッドは ArrayObject オブジェクトを返すため、バリデーターを挿入または削除して操作できます(モデルのビヘイビアで役立ちます)。例:

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

モデルで宣言されたすべてのバリデーター。

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

            
hasAttribute() public メソッド

モデルに指定された名前の属性があるかどうかを示す値を返します。

public boolean hasAttribute ( $name )
$name string

属性の名前

return boolean

モデルが指定された名前の属性を持っているかどうか。

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

            
hasErrors() public メソッド

定義元: yii\base\Model::hasErrors()

検証エラーがあるかどうかを示す値を返します。

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

属性名。すべての属性をチェックする場合は null を使用します。

return boolean

エラーがあるかどうか。

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

            
hasEventHandlers() public メソッド

定義元: yii\base\Component::hasEventHandlers()

指定された名前のイベントにハンドラーがアタッチされているかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name string

イベント名

return boolean

イベントにアタッチされたハンドラーがあるかどうか。

                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 メソッド

has-many リレーションを宣言します。

宣言は、関連レコードを照会して取得できる、リレーショナル yii\db\ActiveQuery インスタンスの形で返されます。

has-many 関係とは、この関係によって設定された基準に一致する関連レコードが複数存在することを意味します。例: 顧客には多くの注文があります。

たとえば、Customer クラスの orders 関係を宣言するには、Customer クラスに次のコードを記述できます。

public function getOrders()
{
    return $this->hasMany(Order::class, ['customer_id' => 'id']);
}

上記の例では、$link パラメーターの 'customer_id' キーは、関連クラス Order の属性名を指し、'id' の値は現在の AR クラスの属性名を指します。

yii\db\ActiveQuery で宣言されたメソッドを呼び出して、関係をさらにカスタマイズします。

public yii\db\ActiveQueryInterface hasMany ( $class, $link )
$class string

関連レコードのクラス名

$link array

主キー - 外部キー制約。配列のキーは $class モデルに関連付けられたレコードの属性を参照し、配列の値は **この** AR クラスの対応する属性を参照します。

return yii\db\ActiveQueryInterface

リレーショナルクエリオブジェクト。

                public function hasMany($class, $link)
{
    return $this->createRelationQuery($class, $link, true);
}

            
hasMethod() public メソッド

定義元: yii\base\Component::hasMethod()

メソッドが定義されているかどうかを示す値を返します。

メソッドは次の場合に定義されます。

  • クラスが指定された名前のメソッドを持っている場合
  • アタッチされたビヘイビアが指定された名前のメソッドを持っている場合($checkBehaviors が true の場合)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

プロパティ名

$checkBehaviors boolean

ビヘイビアのメソッドをこのコンポーネントのメソッドとして扱うかどうか

return boolean

メソッドが定義されているかどうか

                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 メソッド

has-one リレーションを宣言します。

宣言は、関連レコードを照会して取得できる、リレーショナル yii\db\ActiveQuery インスタンスの形で返されます。

has-one 関係とは、この関係によって設定された基準に一致する関連レコードが最大で 1 つ存在することを意味します。例: 顧客には 1 つの国があります。

たとえば、Customer クラスの country 関係を宣言するには、Customer クラスに次のコードを記述できます。

public function getCountry()
{
    return $this->hasOne(Country::class, ['id' => 'country_id']);
}

上記の例では、$link パラメーターの 'id' キーは、関連クラス Country の属性名を指し、'country_id' の値は現在の AR クラスの属性名を指します。

yii\db\ActiveQuery で宣言されたメソッドを呼び出して、関係をさらにカスタマイズします。

public yii\db\ActiveQueryInterface hasOne ( $class, $link )
$class string

関連レコードのクラス名

$link array

主キー - 外部キー制約。配列のキーは $class モデルに関連付けられたレコードの属性を参照し、配列の値は **この** AR クラスの対応する属性を参照します。

return yii\db\ActiveQueryInterface

リレーショナルクエリオブジェクト。

                public function hasOne($class, $link)
{
    return $this->createRelationQuery($class, $link, false);
}

            
hasProperty() public メソッド

定義元: yii\base\Component::hasProperty()

このコンポーネントにプロパティが定義されているかどうかを示す値を返します。

プロパティは次の場合に定義されます。

  • クラスが指定された名前に関連付けられた getter または setter メソッドを持っている場合(この場合、プロパティ名は case-insensitive です)。
  • クラスに、指定された名前のメンバー変数がある場合($checkVars が true の場合)。
  • アタッチされたビヘイビアが指定された名前のプロパティを持っている場合($checkBehaviors が true の場合)。

参考

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

プロパティ名

$checkVars boolean

メンバー変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

return boolean

プロパティが定義されているかどうか

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

            
init() public メソッド

オブジェクトを初期化します。

このメソッドはコンストラクターの最後に呼び出されます。デフォルトの実装では、EVENT_INIT イベントがトリガーされます。

public void init ( )

                public function init()
{
    parent::init();
    $this->trigger(self::EVENT_INIT);
}

            
insert() public abstract メソッド

定義元: yii\db\ActiveRecordInterface::insert()

このレコードの属性値を使用して、データベースにレコードを挿入します。

使用例

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

レコードを保存する前にバリデーション(validate()の呼び出し)を実行するかどうか。デフォルトはtrueです。バリデーションが失敗した場合、レコードはデータベースに保存されず、このメソッドはfalseを返します。

$attributes array|null

保存する必要のある属性のリスト。デフォルトはnullで、DBからロードされたすべての属性が保存されることを意味します。

return boolean

属性が有効で、レコードが正常に挿入されたかどうか。

                public function insert($runValidation = true, $attributes = null);

            
instance() public static メソッド

定義元: yii\base\StaticInstanceTrait::instance()

メタ情報を取得するために使用できる静的クラスインスタンスを返します。

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

静的インスタンスが既にキャッシュされている場合でも、再作成するかどうか。

return static

クラスインスタンス。

                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 メソッド

アクティブレコードインスタンスを作成します。

このメソッドは、yii\db\ActiveQueryによってpopulateRecord()と共に呼び出されます。新しいレコードを直接作成するために使用されるべきではありません。

作成されるインスタンスが、レコードに設定される行データに依存する場合は、このメソッドをオーバーライドできます。たとえば、列の値に基づいてレコードを作成することで、いわゆる単一テーブル継承マッピングを実装できます。

public static static instantiate ( $row )
$row array

レコードに設定される行データ。

return static

新しく作成されたアクティブレコード

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

            
isAttributeActive() public メソッド

定義元: yii\base\Model::isAttributeActive()

現在のシナリオで属性がアクティブかどうかを示す値を返します。

こちらも参照してください activeAttributes()

public boolean isAttributeActive ( $attribute )
$attribute string

属性名

return boolean

現在のシナリオで属性がアクティブかどうか

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

            
isAttributeChanged() public メソッド

指定された属性が変更されたかどうかを示す値を返します。

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

属性の名前。

$identical boolean

新しい値と古い値の比較を===を使用して同一の値に対して行うかどうか。デフォルトはtrueです。それ以外の場合は、==が比較に使用されます。このパラメーターはバージョン2.0.4以降で使用できます。

return boolean

属性が変更されたかどうか

                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 メソッド

定義元: yii\base\Model::isAttributeRequired()

属性が必須かどうかを示す値を返します。

これは、属性が現在の$scenariorequiredバリデーションルールに関連付けられているかどうかを確認することによって決定されます。

バリデーターが$whenを使用して条件付きバリデーションを適用している場合、このメソッドは、モデルにデータがロードされる前に呼び出される可能性があるため、when条件に関係なくfalseを返すことに注意してください。

public boolean isAttributeRequired ( $attribute )
$attribute string

属性名

return boolean

属性が必須かどうか

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

            
isAttributeSafe() public メソッド

定義元: yii\base\Model::isAttributeSafe()

属性が一括代入に対して安全かどうかを示す値を返します。

こちらも参照してください safeAttributes()

public boolean isAttributeSafe ( $attribute )
$attribute string

属性名

return boolean

属性が大量代入に対して安全かどうか

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

            
isPrimaryKey() public static メソッド

指定された属性のセットがこのモデルの主キーを表すかどうかを示す値を返します。

public static boolean isPrimaryKey ( $keys )
$keys array

確認する属性のセット

return boolean

指定された属性セットがこのモデルのプライマリキーを表すかどうか

                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 メソッド

指定されたリレーションがレコードで設定されているかどうかを確認します。

getRelation() も参照してください。

public boolean isRelationPopulated ( $name )
$name string

リレーション名。例: getOrders() メソッドで定義されたリレーションの場合 orders (大文字と小文字を区別)。

return boolean

リレーションがレコードで設定されているかどうか。

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

            
link() public メソッド

2つのモデル間の関係を確立します。

リレーションシップは、一方のモデルの外部キー値を、他方のモデルの対応するプライマリキー値に設定することによって確立されます。外部キーを持つモデルは、バリデーションを実行せず、イベント/ビヘイビアもなしでデータベースに保存されます。

リレーションシップが中間テーブルを含む場合、両方のモデルのプライマリキー値を含む新しい行が中間テーブルに挿入されます。

このメソッドでは、プライマリキーの値がnullでない必要があることに注意してください。

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

リレーションシップの大文字と小文字を区別する名前。例えば、getOrders()メソッドで定義されたリレーションの場合はorders

$model yii\db\ActiveRecordInterface

現在のモデルとリンクされるモデル。

$extraColumns array

中間テーブルに保存される追加の列値。このパラメーターは、中間テーブルを含むリレーションシップ(つまり、yii\db\ActiveRelationTrait::via()またはyii\db\ActiveQuery::viaTable()で設定されたリレーション)でのみ意味があります。

throws yii\base\InvalidCallException

メソッドが2つのモデルをリンクできない場合。

load() public メソッド

定義元: yii\base\Model::load()

入力データでモデルを設定します。

このメソッドは、便利なショートカットを提供します

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

これは、load()を使用すると、次のように記述できます

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

load() は、モデルの formName() メソッド (オーバーライド可能) から 'FormName' を取得します。ただし、$formName パラメータが指定されている場合は除きます。フォーム名が空の場合、load() は、$data['FormName'] の代わりに、$data 全体を使用してモデルを初期化します。

初期化されるデータは、setAttributes() による安全性チェックの対象となることに注意してください。

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

ロードするデータ配列。通常は $_POST または $_GET です。

$formName string|null

モデルにデータをロードするために使用するフォーム名。フォームを使用しない場合は空の文字列。設定されていない場合は、formName() が使用されます。

return boolean

load()$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;
}

            
loadMultiple() public static method

定義元: yii\base\Model::loadMultiple()

エンドユーザーからのデータでモデルのセットを設定します。

このメソッドは、主に表形式のデータ入力を収集するために使用されます。各モデルにロードされるデータは $data[formName][index] です。ここで formNameformName() の値を指し、index$models 配列内のモデルのインデックスを指します。formName() が空の場合、$data[index] が各モデルを初期化するために使用されます。各モデルに初期化されるデータは、setAttributes() による安全性チェックの対象となります。

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

初期化するモデル。すべてのモデルが同じクラスである必要があります。

$data array

データ配列。これは通常 $_POST または $_GET ですが、エンドユーザーによって提供される有効な配列にすることもできます。

$formName string|null

モデルにデータをロードするために使用するフォーム名。設定されていない場合は、$models 内の最初のモデルの formName() 値が使用されます。このパラメータはバージョン 2.0.1 から使用可能です。

return boolean

少なくとも1つのモデルが正常に初期化されたかどうか。

                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;
}

            
loadRelations() public method (バージョン 2.0.50 から利用可能)

すでにロードされているプライマリモデルの関連モデルを遅延ロードします。

特定の条件が満たされた場合にのみ関連モデルが使用される場合、データベースに対して実行されるクエリの数を減らすのに役立ちます。例えば

$customer = Customer::find()->where(['id' => 123])->one();
if (Yii:app()->getUser()->getIdentity()->canAccessOrders()) {
    $customer->loadRelations('orders.items');
}
public void loadRelations ( $relationNames, $asArray false )
$relationNames string|array

データベースからロードするこのモデルのリレーションの名前。この引数の指定方法については、yii\db\ActiveQueryInterface::with() を参照してください。

$asArray boolean

各リレーションを配列としてロードするか、オブジェクトとしてロードするか (リレーション自体がそれを指定していない場合)。

                public function loadRelations($relationNames, $asArray = false)
{
    $models = [$this];
    static::loadRelationsFor($models, $relationNames, $asArray);
}

            
loadRelationsFor() public static method (バージョン 2.0.50 から利用可能)

すでにロードされているプライマリモデルの関連モデルを遅延ロードします。

特定の条件が満たされた場合にのみ関連モデルが使用される場合、データベースに対して実行されるクエリの数を減らすのに役立ちます。例えば

$customers = Customer::find()->where(['country_id' => 123])->all();
if (Yii:app()->getUser()->getIdentity()->canAccessOrders()) {
    Customer::loadRelationsFor($customers, 'orders.items');
}
public static void loadRelationsFor ( &$models, $relationNames, $asArray false )
$models array|yii\db\ActiveRecordInterface[]

プライマリモデルの配列。各モデルは同じ型であり、次のいずれかになります。

  • アクティブレコードインスタンス。
  • 配列で表現されるアクティブレコードインスタンス (つまり、アクティブレコードは yii\db\ActiveQuery::asArray() を使用してロードされました)。
$relationNames string|array

データベースからロードするプライマリモデルのリレーションの名前。この引数の指定方法については、yii\db\ActiveQueryInterface::with() を参照してください。

$asArray boolean

各関連モデルを配列としてロードするか、オブジェクトとしてロードするか (リレーション自体がそれを指定していない場合)。

                public static function loadRelationsFor(&$models, $relationNames, $asArray = false)
{
    // ActiveQueryTrait::findWith() called below assumes $models array is non-empty.
    if (empty($models)) {
        return;
    }
    static::find()->asArray($asArray)->findWith((array)$relationNames, $models);
}

            
markAttributeDirty() public method

属性をダーティとしてマークします。

このメソッドは、レコードに変更が加えられていない場合でも、update() を呼び出すときにレコードを強制的に更新するために呼び出すことができます。

public void markAttributeDirty ( $name )
$name string

属性名

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

            
off() public method

定義元: yii\base\Component::off()

このコンポーネントから既存のイベントハンドラーをデタッチします。

このメソッドは、on() の反対です。

注: イベント名にワイルドカードパターンが渡された場合、このワイルドカードで登録されたハンドラーのみが削除され、このワイルドカードに一致するプレーンな名前で登録されたハンドラーは残ります。

こちらも参照: on()

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

イベント名

$handler callable|null

削除するイベントハンドラー。null の場合、名前付きイベントにアタッチされたすべてのハンドラーが削除されます。

return boolean

ハンドラーが見つかり、デタッチされた場合

                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

指定されたオフセットに要素があるかどうかを返します。

このメソッドは、インターフェース ArrayAccess によって必要とされます。

public boolean offsetExists ( $offset )
$offset mixed

チェックするオフセット

return boolean

指定されたオフセットに要素があるかどうか。

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

            
offsetGet() public method

定義元: yii\base\Model::offsetGet()

指定されたオフセットにある要素を返します。

このメソッドは、SPL インターフェース ArrayAccess によって必要とされます。$value = $model[$offset]; のようなものを使用すると、暗黙的に呼び出されます。

public mixed offsetGet ( $offset )
$offset string

要素を取得するオフセット。

return mixed

オフセットにある要素。オフセットに要素が見つからない場合は null。

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

            
offsetSet() public method

定義元: yii\base\Model::offsetSet()

指定されたオフセットに要素を設定します。

このメソッドは、SPL インターフェース ArrayAccess によって必要とされます。$model[$offset] = $value; のようなものを使用すると、暗黙的に呼び出されます。

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

要素を設定するオフセット

$value mixed

要素の値

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

            
offsetUnset() public メソッド

指定されたオフセットにある要素の値を null に設定します。

このメソッドはSPLインターフェースArrayAccessによって要求されます。unset($model[$offset])のようなものを使用すると、暗黙的に呼び出されます。

public void offsetUnset ( $offset )
$offset mixed

要素をunsetするためのオフセット

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

            
on() public メソッド

定義元: yii\base\Component::on()

イベントにイベントハンドラーをアタッチします。

イベントハンドラは有効なPHPコールバックでなければなりません。以下にいくつかの例を示します。

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

イベントハンドラは、以下のシグネチャで定義する必要があります。

function ($event)

ここで、$eventはイベントに関連付けられたパラメータを含むyii\base\Eventオブジェクトです。

2.0.14以降では、イベント名をワイルドカードパターンとして指定できます。

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

こちらも参照 off()

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

イベント名

$handler callable

イベントハンドラ

$data mixed

イベントがトリガーされたときにイベントハンドラに渡されるデータ。イベントハンドラが呼び出されたとき、このデータはyii\base\Event::$dataを介してアクセスできます。

$append boolean

既存のハンドラリストの末尾に新しいイベントハンドラを追加するかどうか。falseの場合、新しいハンドラは既存のハンドラリストの先頭に挿入されます。

                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 メソッド

定義元: yii\base\Model::onUnsafeAttribute()

安全でない属性が一括代入されているときに、このメソッドが呼び出されます。

デフォルトの実装では、YII_DEBUGがオンの場合、警告メッセージをログに記録します。それ以外の場合は何も行いません。

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

安全でない属性名

$value mixed

属性値

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

            
optimisticLock() public メソッド

オプティミスティックロックを実装するためにロックバージョンを格納する列の名前を返します。

楽観的ロックを使用すると、複数のユーザーが編集のために同じレコードにアクセスでき、潜在的な競合を回避できます。ユーザーが古いデータに基づいてレコードを保存しようとした場合(別のユーザーがデータを変更したため)、yii\db\StaleObjectException例外がスローされ、更新または削除がスキップされます。

楽観的ロックは、update()delete()でのみサポートされています。

楽観的ロックを使用するには

  1. 各行のバージョン番号を格納する列を作成します。列の型はBIGINT DEFAULT 0である必要があります。このメソッドをオーバーライドして、この列の名前を返します。
  2. 更新または削除を行う前に、バージョン値が送信され、モデルにロードされていることを確認してください。または、OptimisticLockBehaviorをモデルクラスに追加して、プロセスを自動化します。
  3. ユーザー入力を収集するWebフォームで、更新されるレコードのロックバージョンを格納する隠しフィールドを追加します。
  4. データ更新を行うコントローラアクションで、yii\db\StaleObjectExceptionをキャッチし、競合を解決するために必要なビジネスロジック(たとえば、変更のマージ、古いデータのプロンプトなど)を実装してみてください。
public string|null optimisticLock ( )
return string|null

テーブル行のロックバージョンを格納する列名。nullが返された場合(デフォルトの実装)、楽観的ロックはサポートされません。

                public function optimisticLock()
{
    return null;
}

            
populateRecord() public static メソッド

データベース/ストレージからのデータの行を使用してアクティブレコードオブジェクトを設定します。

これは、データベースからデータをフェッチした後、アクティブレコードオブジェクトを作成するために呼び出される内部メソッドです。これは主にyii\db\ActiveQueryによって、クエリ結果をアクティブレコードに投入するために使用されます。

このメソッドを手動で呼び出す場合は、作成されたレコードに対してafterFind()を呼び出して、afterFind Eventをトリガーする必要があります。

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

設定されるレコード。ほとんどの場合、これは事前にinstantiate()によって作成されたインスタンスになります。

$row array

属性値(name => value)

                public static function populateRecord($record, $row)
{
    $columns = array_flip($record->attributes());
    foreach ($row as $name => $value) {
        if (isset($columns[$name])) {
            $record->_attributes[$name] = $value;
        } elseif ($record->canSetProperty($name)) {
            $record->$name = $value;
        }
    }
    $record->_oldAttributes = $record->_attributes;
    $record->_related = [];
    $record->_relationsDependencies = [];
}

            
populateRelation() public メソッド

指定されたリレーションに関連レコードを設定します。

このメソッドは、リレーションが存在するかどうかをチェックしないことに注意してください。

getRelation() も参照してください。

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

リレーション名。例: getOrders() メソッドで定義されたリレーションの場合 orders (大文字と小文字を区別)。

$records yii\db\ActiveRecordInterface|array|null

リレーションに設定される関連レコード。

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

            
primaryKey() public abstract static メソッド

定義元: yii\db\ActiveRecordInterface::primaryKey()

このARクラスの主キーを返します。

レコードにプライマリキーが1つしかない場合でも、配列を返す必要があることに注意してください。

プライマリキーのについては、代わりにgetPrimaryKey()を参照してください。

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

このARクラスのプライマリキー名。

                public static function primaryKey();

            
refresh() public メソッド

このアクティブレコードを最新データで再設定します。

リフレッシュが成功すると、EVENT_AFTER_REFRESHイベントがトリガーされます。このイベントはバージョン2.0.8以降で利用可能です。

public boolean refresh ( )
return boolean

行がまだデータベースに存在するかどうか。trueの場合、最新のデータがこのアクティブレコードに設定されます。それ以外の場合、このレコードは変更されません。

                public function refresh()
{
    /* @var $record BaseActiveRecord */
    $record = static::findOne($this->getPrimaryKey(true));
    return $this->refreshInternal($record);
}

            
refreshInternal() protected メソッド (バージョン 2.0.13 以降で利用可能)

新しくフェッチされたインスタンスからの最新データでこのアクティブレコードを再設定します。

こちらも参照 refresh()

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

属性を取得するレコード。

return boolean

リフレッシュが成功したかどうか。

                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 メソッド

定義元: yii\base\ArrayableTrait::resolveFields()

toArray()でどのフィールドを返すことができるかを決定します。

このメソッドは、まず与えられたフィールドからルートフィールドを抽出します。次に、リクエストされたルートフィールドを fields() および extraFields() で宣言されたフィールドと照合し、どのフィールドを返すことができるかを判断します。

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

エクスポートするためにリクエストされたフィールド

$expand array

エクスポートするためにリクエストされた追加のフィールド

return array

エクスポートされるフィールドのリスト。配列のキーはフィールド名であり、配列の値は対応するオブジェクトのプロパティ名、またはフィールド値を返すPHPのコールバックです。

                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

定義元: yii\base\Model::rules()

属性の検証ルールを返します。

バリデーションルールは、validate() によって属性値が有効かどうかをチェックするために使用されます。子クラスは、異なるバリデーションルールを宣言するためにこのメソッドをオーバーライドすることができます。

各ルールは、次の構造を持つ配列です

[
    ['attribute1', 'attribute2'],
    'validator type',
    'on' => ['scenario1', 'scenario2'],
    //...other parameters...
]

ここで

  • 属性リスト: 必須。バリデーションされる属性配列を指定します。単一の属性の場合は文字列を渡すことができます。
  • バリデータータイプ: 必須。使用するバリデーターを指定します。組み込みバリデーター名、モデルクラスのメソッド名、匿名関数、またはバリデータークラス名を使用できます。
  • on: オプション。バリデーションルールが適用されるシナリオの配列を指定します。このオプションが設定されていない場合、ルールはすべてのシナリオに適用されます。
  • 追加の名前と値のペアを指定して、対応するバリデーターのプロパティを初期化できます。可能なプロパティについては、個々のバリデータークラスのAPIを参照してください。

バリデーターは、yii\validators\Validator を拡張するクラスのオブジェクト、または以下のシグネチャを持つモデルクラスのメソッド(インラインバリデーターと呼ばれます)のいずれかになります

// $params refers to validation parameters given in the rule
function validatorName($attribute, $params)

上記では、$attribute は現在バリデーションされている属性を指し、$params には、string バリデーターの場合の max など、バリデーターの構成オプションの配列が含まれています。現在バリデーションされている属性の値には、$this->$attribute としてアクセスできます。attribute の前の $ に注意してください。これは、変数 $attribute の値を取得し、それをアクセスするプロパティの名前として使用します。

Yii はまた、組み込みバリデーターのセットを提供します。それぞれに、バリデーションルールを指定するときに使用できるエイリアス名があります。

以下にいくつかの例を示します

[
    // built-in "required" validator
    [['username', 'password'], 'required'],
    // built-in "string" validator customized with "min" and "max" properties
    ['username', 'string', 'min' => 3, 'max' => 12],
    // built-in "compare" validator that is used in "register" scenario only
    ['password', 'compare', 'compareAttribute' => 'password2', 'on' => 'register'],
    // an inline validator defined via the "authenticate()" method in the model class
    ['password', 'authenticate', 'on' => 'login'],
    // a validator of class "DateRangeValidator"
    ['dateRange', 'DateRangeValidator'],
];

親クラスで定義されたルールを継承するには、子クラスは array_merge() などの関数を使用して、親ルールと子ルールをマージする必要があります。

scenarios() も参照してください。

public array rules ( )
return array

バリデーションルール

                public function rules()
{
    return [];
}

            
safeAttributes() public method

定義元: yii\base\Model::safeAttributes()

現在のシナリオで一括代入に対して安全な属性名を返します。

public string[] safeAttributes ( )
return string[]

安全な属性名

                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

現在のレコードを保存します。

このメソッドは、$isNewRecordtrue の場合は insert() を呼び出し、$isNewRecordfalse の場合は update() を呼び出します。

たとえば、顧客レコードを保存する場合

$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

レコードを保存する前にバリデーション(validate()の呼び出し)を実行するかどうか。デフォルトはtrueです。バリデーションが失敗した場合、レコードはデータベースに保存されず、このメソッドはfalseを返します。

$attributeNames array|null

保存する必要がある属性名のリスト。デフォルトは null で、DBからロードされたすべての属性が保存されることを意味します。

return boolean

保存が成功したかどうか(つまり、バリデーションエラーが発生しなかったか)。

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

            
scenarios() public method

定義元: yii\base\Model::scenarios()

シナリオと対応するアクティブな属性のリストを返します。

アクティブな属性とは、現在のシナリオでバリデーションの対象となる属性のことです。返される配列は次の形式である必要があります

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

デフォルトでは、アクティブな属性は安全であると見なされ、一括代入できます。属性を一括代入すべきでない場合(したがって安全でないと見なされる場合)、属性の前に感嘆符(例:'!rank')を付けてください。

このメソッドのデフォルトの実装では、rules() の宣言で見つかったすべてのシナリオを返します。 SCENARIO_DEFAULT という名前の特別なシナリオには、rules() に見られるすべての属性が含まれます。各シナリオは、そのシナリオに適用されるバリデーションルールによってバリデーションされている属性に関連付けられます。

public array scenarios ( )
return array

シナリオのリストと、対応するアクティブな属性。

                public function scenarios()
{
    $scenarios = [self::SCENARIO_DEFAULT => []];
    foreach ($this->getValidators() as $validator) {
        foreach ($validator->on as $scenario) {
            $scenarios[$scenario] = [];
        }
        foreach ($validator->except as $scenario) {
            $scenarios[$scenario] = [];
        }
    }
    $names = array_keys($scenarios);
    foreach ($this->getValidators() as $validator) {
        if (empty($validator->on) && empty($validator->except)) {
            foreach ($names as $name) {
                foreach ($validator->attributes as $attribute) {
                    $scenarios[$name][$attribute] = true;
                }
            }
        } elseif (empty($validator->on)) {
            foreach ($names as $name) {
                if (!in_array($name, $validator->except, true)) {
                    foreach ($validator->attributes as $attribute) {
                        $scenarios[$name][$attribute] = true;
                    }
                }
            }
        } else {
            foreach ($validator->on as $name) {
                foreach ($validator->attributes as $attribute) {
                    $scenarios[$name][$attribute] = true;
                }
            }
        }
    }
    foreach ($scenarios as $scenario => $attributes) {
        if (!empty($attributes)) {
            $scenarios[$scenario] = array_keys($attributes);
        }
    }
    return $scenarios;
}

            
setAttribute() public method

指定された属性値を設定します。

参照: hasAttribute()

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

属性名

$value mixed

属性値。

throws yii\base\InvalidArgumentException

指定された属性が存在しない場合。

                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

定義元: yii\base\Model::setAttributes()

属性値をまとめて設定します。

参考

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

モデルに割り当てる属性値(名前 => 値)。

$safeOnly boolean

割り当てを安全な属性に対してのみ行う必要があるかどうか。安全な属性とは、現在の$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);
            }
        }
    }
}

            
setIsNewRecord() public method

レコードが新規かどうかを示す値を設定します。

getIsNewRecord() も参照してください。

public void setIsNewRecord ( $value )
$value boolean

レコードが新しいかどうか、save() を呼び出すときに挿入されるべきかどうか。

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

            
setOldAttribute() public method

指定された属性の古い値を設定します。

参照: hasAttribute()

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

属性名

$value mixed

古い属性値。

throws yii\base\InvalidArgumentException

指定された属性が存在しない場合。

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

            
setOldAttributes() public method

古い属性値を設定します。

既存のすべての古い属性値は破棄されます。

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

設定する古い属性値。null に設定すると、このレコードは新規であるとみなされます。

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

            
setScenario() public メソッド

定義元: yii\base\Model::setScenario()

モデルのシナリオを設定します。

このメソッドはシナリオが存在するかどうかをチェックしないことに注意してください。メソッドvalidate() がこのチェックを実行します。

public void setScenario ( $value )
$value string

このモデルが存在するシナリオ。

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

            
toArray() public メソッド

定義元: yii\base\ArrayableTrait::toArray()

モデルを配列に変換します。

このメソッドは、最初にresolveFields()を呼び出すことで、結果の配列に含めるフィールドを特定します。次に、これらのフィールドを持つモデルを配列に変換します。$recursiveがtrueの場合、埋め込まれたオブジェクトも配列に変換されます。埋め込まれたオブジェクトがyii\base\Arrayableの場合、それらのネストされたフィールドが抽出され、toArray()に渡されます。

モデルがyii\web\Linkableインターフェースを実装している場合、結果の配列には、インターフェースで指定されたリンクのリストを参照する_link要素も含まれます。

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

リクエストされたフィールド。空の場合、または'*'が含まれている場合は、fields()で指定されたすべてのフィールドが返されます。フィールドはドット(.)で区切られたネストにすることができます。例:item.field.sub-field ネストされたフィールドを抽出するには、$recursiveがtrueである必要があります。$recursiveがfalseの場合、ルートフィールドのみが抽出されます。

$expand array

エクスポート用にリクエストされた追加フィールド。 extraFields()で宣言されたフィールドのみが考慮されます。展開もドット(.)で区切られたネストにすることができます。例:item.expand1.expand2 ネストされた展開を抽出するには、$recursiveがtrueである必要があります。$recursiveがfalseの場合、ルート展開のみが抽出されます。

$recursive boolean

埋め込まれたオブジェクトの配列表現を再帰的に返すかどうか。

return array

オブジェクトの配列表現

                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;
}

            
trigger() public メソッド

定義元: yii\base\Component::trigger()

イベントをトリガーします。

このメソッドはイベントの発生を表します。クラスレベルのハンドラーを含む、イベントにアタッチされたすべてのハンドラーを呼び出します。

public void trigger ( $name, yii\base\Event $event null )
$name string

イベント名

$event yii\base\Event|null

イベントインスタンス。設定されていない場合、デフォルトのyii\base\Eventオブジェクトが作成されます。

                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 メソッド

2つのモデル間の関係を破棄します。

$deletetrueの場合、リレーションシップの外部キーを持つモデルは削除されます。それ以外の場合、外部キーはnullに設定され、モデルは検証なしで保存されます。

public void unlink ( $name, $model, $delete false )
$name string

リレーションシップの大文字と小文字を区別する名前。例えば、getOrders()メソッドで定義されたリレーションの場合はorders

$model yii\db\ActiveRecordInterface

現在のモデルからリンクを解除するモデル。このメソッドはこれをチェックしないため、モデルが現在のモデルと実際に関連していることを確認する必要があります。

$delete boolean

外部キーを含むモデルを削除するかどうか。falseの場合、モデルの外部キーはnullに設定され、保存されます。trueの場合、外部キーを含むモデルは削除されます。

throws yii\base\InvalidCallException

モデルがリンク解除できない場合

throws yii\db\Exception
throws yii\db\StaleObjectException

unlinkAll() public メソッド

現在のモデルの関係を破棄します。

$deletetrueの場合、リレーションシップの外部キーを持つモデルは削除されます。それ以外の場合、外部キーはnullに設定され、モデルは検証なしで保存されます。

レコードを削除せずにリレーションシップを破棄するには、キーをnullに設定できるようにする必要があることに注意してください。

public void unlinkAll ( $name, $delete false )
$name string

リレーションシップの大文字と小文字を区別する名前。例えば、getOrders()メソッドで定義されたリレーションの場合はorders

$delete boolean

外部キーを含むモデルを削除するかどうか。

削除は、関連モデルでイベントをトリガーしないdeleteAll()を使用して実行されることに注意してください。EVENT_BEFORE_DELETEまたはEVENT_AFTER_DELETEをトリガーする必要がある場合は、最初にモデルをfindしてから、それぞれのモデルでdelete()を呼び出す必要があります。

                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 メソッド

このアクティブレコードの変更を関連するデータベーステーブルに保存します。

このメソッドは、以下のステップを順番に実行します。

  1. $runValidationtrueの場合、beforeValidate()を呼び出します。beforeValidate()falseを返した場合、残りの手順はスキップされます。
  2. $runValidationtrueの場合、afterValidate()を呼び出します。検証が失敗した場合、残りの手順はスキップされます。
  3. beforeSave()を呼び出します。beforeSave()falseを返した場合、残りの手順はスキップされます。
  4. レコードをデータベースに保存します。これが失敗した場合、残りの手順はスキップされます。
  5. afterSave()を呼び出します。

上記の手順1、2、3、5では、EVENT_BEFORE_VALIDATEEVENT_AFTER_VALIDATEEVENT_BEFORE_UPDATE、およびEVENT_AFTER_UPDATEイベントが、対応するメソッドによって発生します。

データベースに保存されるのは、変更された属性値のみです。

たとえば、顧客レコードを更新するには

$customer = Customer::findOne($id);
$customer->name = $name;
$customer->email = $email;
$customer->update();

更新がテーブル内のどの行にも影響を与えない可能性があることに注意してください。この場合、このメソッドは0を返します。このため、update()が成功したかどうかを確認するには、次のコードを使用する必要があります。

if ($customer->update() !== false) {
    // update successful
} else {
    // update failed
}
public integer|false update ( $runValidation true, $attributeNames null )
$runValidation boolean

レコードを保存する前にバリデーション(validate()の呼び出し)を実行するかどうか。デフォルトはtrueです。バリデーションが失敗した場合、レコードはデータベースに保存されず、このメソッドはfalseを返します。

$attributeNames array|null

保存する必要がある属性名のリスト。デフォルトは null で、DBからロードされたすべての属性が保存されることを意味します。

return integer|false

影響を受けた行数、または検証が失敗した場合、またはbeforeSave()が更新プロセスを停止した場合はfalse

throws yii\db\StaleObjectException

楽観的ロックが有効になっており、更新されるデータが古い場合。

throws yii\db\Exception

更新に失敗した場合。

                public function update($runValidation = true, $attributeNames = null)
{
    if ($runValidation && !$this->validate($attributeNames)) {
        return false;
    }
    return $this->updateInternal($attributeNames);
}

            
updateAll() public static メソッド

指定された属性値と条件を使用して、テーブル全体を更新します。

たとえば、ステータスが2のすべての顧客のステータスを1に変更するには

Customer::updateAll(['status' => 1], 'status = 2');
public static integer updateAll ( $attributes, $condition '' )
$attributes array

テーブルに保存される属性値(名前と値のペア)

$condition string|array

UPDATE SQLのWHERE句に置かれる条件。このパラメータの指定方法については、yii\db\Query::where()を参照してください。

return integer

更新された行数

throws yii\base\NotSupportedException

オーバーライドされていない場合

                public static function updateAll($attributes, $condition = '')
{
    throw new NotSupportedException(__METHOD__ . ' is not supported.');
}

            
updateAllCounters() public static メソッド

指定されたカウンターの変更と条件を使用して、テーブル全体を更新します。

例えば、全ての顧客の年齢を1増やすには、

Customer::updateAllCounters(['age' => 1]);
public static integer updateAllCounters ( $counters, $condition '' )
$counters array

更新するカウンター(属性名 => 増分値)。カウンターを減らしたい場合は負の値を使用します。

$condition string|array

UPDATE SQLのWHERE句に置かれる条件。このパラメータの指定方法については、yii\db\Query::where()を参照してください。

return integer

更新された行数

throws yii\base\NotSupportedException

オーバーライドされていない場合

                public static function updateAllCounters($counters, $condition = '')
{
    throw new NotSupportedException(__METHOD__ . ' is not supported.');
}

            
updateAttributes() public メソッド

指定された属性を更新します。

このメソッドは、データ検証が不要で、少数の属性のみを更新する必要がある場合に、update()へのショートカットです。

更新する属性を名前リストまたは名前と値のペアとして指定できます。後者の場合、対応する属性値がそれに応じて変更されます。その後、メソッドは指定された属性をデータベースに保存します。

このメソッドはデータ検証を実行せず、イベントもトリガーしません

public integer updateAttributes ( $attributes )
$attributes array

更新する属性(名前または名前と値のペア)

return integer

影響を受けた行数。

                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 メソッド

現在のARオブジェクトの1つまたは複数のカウンター列を更新します。

このメソッドは、現在のARオブジェクトのカウンターのみを保存するという点で、updateAllCounters()とは異なることに注意してください。

使用例は以下のとおりです。

$post = Post::findOne($id);
$post->updateCounters(['view_count' => 1]);

updateAllCounters()も参照してください。

public boolean updateCounters ( $counters )
$counters array

更新するカウンター(属性名 => 増分値)。カウンターを減らしたい場合は負の値を使用します。

return boolean

保存が成功したかどうか

                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 メソッド

update()も参照してください。

protected integer|false updateInternal ( $attributes null )
$attributes array|null

更新する属性

return integer|false

影響を受けた行数、または beforeSave() が更新プロセスを停止した場合は false。

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 メソッド

定義場所: yii\base\Model::validate()

データ検証を実行します。

このメソッドは、現在の$scenarioに適用可能な検証ルールを実行します。ルールが現在適用可能かどうかを判断するために、次の基準が使用されます。

  • ルールは、現在のシナリオに関連する属性に関連付けられている必要があります。
  • ルールは、現在のシナリオで有効である必要があります。

このメソッドは、実際の検証の前後にそれぞれbeforeValidate()afterValidate()を呼び出します。beforeValidate()がfalseを返した場合、検証はキャンセルされ、afterValidate()は呼び出されません。

検証中に見つかったエラーは、getErrors()getFirstErrors()、およびgetFirstError()を使用して取得できます。

public boolean validate ( $attributeNames null, $clearErrors true )
$attributeNames string[]|string|null

検証する必要がある属性名または属性名のリスト。このパラメーターが空の場合、適用可能な検証ルールにリストされている任意の属性を検証する必要があることを意味します。

$clearErrors boolean

検証を実行する前にclearErrors()を呼び出すかどうか

return boolean

検証がエラーなしで成功したかどうか。

throws yii\base\InvalidArgumentException

現在のシナリオが不明な場合。

                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 メソッド

定義場所: yii\base\Model::validateMultiple()

複数のモデルを検証します。

このメソッドはすべてのモデルを検証します。検証対象のモデルは、同じタイプでも異なるタイプでもかまいません。

public static boolean validateMultiple ( $models, $attributeNames null )
$models array

検証するモデル

$attributeNames array|null

検証する必要がある属性名のリスト。このパラメーターが空の場合、適用可能な検証ルールにリストされている任意の属性を検証する必要があることを意味します。

return boolean

すべてのモデルが有効かどうか。1つまたは複数のモデルに検証エラーがある場合は、Falseが返されます。

                public static function validateMultiple($models, $attributeNames = null)
{
    $valid = true;
    /* @var $model Model */
    foreach ($models as $model) {
        $valid = $model->validate($attributeNames) && $valid;
    }
    return $valid;
}

            

イベントの詳細

継承されたプロパティを非表示

EVENT_AFTER_DELETE yii\db\Event 型のイベント

レコードが削除された後にトリガーされるイベント。

EVENT_AFTER_FIND yii\db\Event 型のイベント

レコードが作成され、クエリ結果で設定された後にトリガーされるイベント。

EVENT_AFTER_INSERT yii\db\AfterSaveEvent 型のイベント

レコードが挿入された後にトリガーされるイベント。

EVENT_AFTER_REFRESH yii\db\Event 型のイベント (バージョン2.0.8から利用可能)

レコードがリフレッシュされた後にトリガーされるイベント。

EVENT_AFTER_UPDATE yii\db\AfterSaveEvent 型のイベント

レコードが更新された後にトリガーされるイベント。

EVENT_BEFORE_DELETE yii\base\ModelEvent 型のイベント

レコードを削除する前にトリガーされるイベント。yii\base\ModelEvent::$isValidfalse に設定して削除を停止できます。

EVENT_BEFORE_INSERT タイプ yii\base\ModelEvent のイベント

レコードの挿入前にトリガーされるイベント。挿入を停止するには、yii\base\ModelEvent::$isValidfalse に設定できます。

EVENT_BEFORE_UPDATE タイプ yii\base\ModelEvent のイベント

レコードの更新前にトリガーされるイベント。更新を停止するには、yii\base\ModelEvent::$isValidfalse に設定できます。

EVENT_INIT タイプ yii\db\Event のイベント

init()を介してレコードが初期化されたときにトリガーされるイベント。