4 followers(フォロワー)

Class yii\db\ActiveRecord

Inheritance(継承)yii\db\ActiveRecord » yii\db\BaseActiveRecord » yii\base\Model » yii\base\Component » yii\base\BaseObject
Implements(実装)ArrayAccess, IteratorAggregate, yii\base\Arrayable, yii\base\Configurable, yii\base\StaticInstanceInterface, yii\db\ActiveRecordInterface
Uses Traits(使用するトレイト)yii\base\ArrayableTrait, yii\base\StaticInstanceTrait
Available since version(利用可能なバージョン)2.0
Source Code(ソースコード) https://github.com/yiisoft/yii2/blob/master/framework/db/ActiveRecord.php

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

Active Recordは、Active Recordデザインパターンを実装しています。Active Recordの前提は、個々のyii\db\ActiveRecordオブジェクトがデータベーステーブルの特定の行に関連付けられているということです。オブジェクトの属性は、対応するテーブルの列にマッピングされます。Active Record属性を参照することは、そのレコードの対応するテーブル列にアクセスすることと同じです。

例として、Customer ActiveRecordクラスがcustomerテーブルに関連付けられているとします。これは、クラスのname属性がcustomerテーブルのname列に自動的にマッピングされることを意味します。Active Recordのおかげで、変数$customerCustomer型のオブジェクトであると仮定すると、テーブル行のname列の値を取得するために、式$customer->nameを使用できます。この例では、Active Recordはデータベースに保存されたデータにアクセスするためのオブジェクト指向インターフェースを提供しています。しかし、Active Recordはこれ以上の機能を提供します。

ActiveRecordクラスを宣言するには、yii\db\ActiveRecordを拡張し、tableNameメソッドを実装する必要があります。

<?php

class Customer extends \yii\db\ActiveRecord
{
    public static function tableName()
    {
        return 'customer';
    }
}

tableNameメソッドは、クラスに関連付けられたデータベーステーブルの名前を返すだけで済みます。

ヒント: データベーステーブルからActiveRecordクラスを生成するには、Giiコードジェネレーターを使用することもできます。

クラスインスタンスは、次の2つの方法のいずれかで取得されます。

  • new演算子を使用して、新しい空のオブジェクトを作成する
  • データベースから既存のレコード(または複数のレコード)をフェッチするメソッドを使用する

以下は、ActiveRecordの一般的な使用方法を示す例です。

$user = new User();
$user->name = 'Qiang';
$user->save();  // a new row is inserted into user table

// the following will retrieve the user 'CeBe' from the database
$user = User::find()->where(['name' => 'CeBe'])->one();

// this will get related records from orders table when relation is defined
$orders = $user->orders;

ActiveRecordの詳細および使用方法については、ActiveRecordに関するガイド記事を参照してください。

Public Properties(公開プロパティ)

Hide inherited properties(継承されたプロパティを隠す)

Property(プロパティ) Type(型) Description(説明) Defined By(定義元)
$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

Public Methods(公開メソッド)

Hide inherited methods(継承されたメソッドを隠す)

Method(メソッド) Description(説明) Defined By(定義元)
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() 既存のオブジェクトを複製してオブジェクトを作成した後、このメソッドが呼び出されます。 yii\base\Model
__construct() コンストラクター。 yii\base\BaseObject
__get() PHPのgetterマジックメソッド。 yii\db\BaseActiveRecord
__isset() プロパティ値がnullかどうかを確認します。 yii\db\BaseActiveRecord
__set() PHPのsetterマジックメソッド。 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\db\ActiveRecord
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\ActiveRecord
deleteAll() 指定された条件を使用して、テーブル内の行を削除します。 yii\db\ActiveRecord
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
equals() 指定されたアクティブレコードが現在のアクティブレコードと同じかどうかを示す値を返します。 yii\db\ActiveRecord
extraFields() toArray() でさらに展開して返せるフィールドのリストを返します。 yii\base\ArrayableTrait
fields() 特定のフィールドが指定されていない場合、toArray() によってデフォルトで返されるフィールドのリストを返します。 yii\base\ArrayableTrait
find() クエリの目的で yii\db\ActiveQueryInterface インスタンスを作成します。 yii\db\ActiveRecord
findAll() 指定された主キーの値または列の値のセットに一致するアクティブレコードモデルのリストを返します。 yii\db\BaseActiveRecord
findBySql() 指定された SQL ステートメントで yii\db\ActiveQuery インスタンスを作成します。 yii\db\ActiveRecord
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\ActiveRecord
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
getTableSchema() この AR クラスに関連付けられた DB テーブルのスキーマ情報を返します。 yii\db\ActiveRecord
getValidators() rules() で宣言されたすべてのバリデーターを返します。 yii\base\Model
hasAttribute() モデルが指定された名前の属性を持っているかどうかを示す値を返します。 yii\db\BaseActiveRecord
hasErrors() 検証エラーがあるかどうかを示す値を返します。 yii\base\Model
hasEventHandlers() 名前付きイベントにハンドラーがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMany() 詳細については、yii\db\BaseActiveRecord::hasMany() を参照してください。 yii\db\ActiveRecord
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasOne() 詳細については、yii\db\BaseActiveRecord::hasOne() を参照してください。 yii\db\ActiveRecord
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\db\BaseActiveRecord
insert() このレコードの属性値を使用して、関連付けられたデータベーステーブルに行を挿入します。 yii\db\ActiveRecord
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
isTransactional() 指定された操作が現在の $scenario でトランザクションであるかどうかを示す値を返します。 yii\db\ActiveRecord
link() 2つのモデル間の関係を確立します。 yii\db\BaseActiveRecord
load() モデルに入力データを設定します。 yii\base\Model
loadDefaultValues() データベーステーブルスキーマからデフォルト値をロードします。 yii\db\ActiveRecord
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\ActiveRecord
populateRelation() 名前付きの関連に関連レコードを設定します。 yii\db\BaseActiveRecord
primaryKey() この AR クラスの主キー名を返します。 yii\db\ActiveRecord
refresh() このアクティブレコードを最新データで再設定します。 yii\db\ActiveRecord
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
tableName() この AR クラスに関連付けられたデータベーステーブルの名前を宣言します。 yii\db\ActiveRecord
toArray() モデルを配列に変換します。 yii\base\ArrayableTrait
transactions() 異なるシナリオでどの DB 操作をトランザクション内で実行するかを宣言します。 yii\db\ActiveRecord
trigger() イベントをトリガーします。 yii\base\Component
unlink() 2つのモデル間の関係を破棄します。 yii\db\BaseActiveRecord
unlinkAll() 現在のモデルの関係を破棄します。 yii\db\BaseActiveRecord
update() このアクティブレコードへの変更を関連付けられたデータベーステーブルに保存します。 yii\db\ActiveRecord
updateAll() 指定された属性値と条件を使用してテーブル全体を更新します。 yii\db\ActiveRecord
updateAllCounters() 指定されたカウンターの変更と条件を使用してテーブル全体を更新します。 yii\db\ActiveRecord
updateAttributes() 指定された属性を更新します。 yii\db\BaseActiveRecord
updateCounters() 現在の AR オブジェクトの1つまたは複数のカウンター列を更新します。 yii\db\BaseActiveRecord
validate() データ検証を実行します。 yii\base\Model
validateMultiple() 複数のモデルを検証します。 yii\base\Model

保護されたメソッド

Hide inherited methods(継承されたメソッドを隠す)

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

イベント

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

イベント Type(型) Description(説明) Defined By(定義元)
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

定数

継承された定数を非表示

定数 Description(説明) Defined By(定義元)
OP_ALL 0x7 挿入、更新、削除の 3 つのすべての操作。これは、OP_INSERT | OP_UPDATE | OP_DELETE 式のショートカットです。 yii\db\ActiveRecord
OP_DELETE 0x4 削除操作。transactions() をオーバーライドして、トランザクション化される操作を指定する場合に主に使用されます。 yii\db\ActiveRecord
OP_INSERT 0x1 挿入操作。transactions() をオーバーライドして、トランザクション化される操作を指定する場合に主に使用されます。 yii\db\ActiveRecord
OP_UPDATE 0x2 更新操作。transactions() をオーバーライドして、トランザクション化される操作を指定する場合に主に使用されます。 yii\db\ActiveRecord
SCENARIO_DEFAULT 'default' デフォルトのシナリオの名前。 yii\base\Model

メソッドの詳細

Hide inherited methods(継承されたメソッドを隠す)

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

定義: yii\db\BaseActiveRecord::__get()

PHPのgetterマジックメソッド。

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

こちらもご覧ください 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 メソッド

定義: yii\db\BaseActiveRecord::__isset()

プロパティ値が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 メソッド

定義: yii\db\BaseActiveRecord::__set()

PHPのsetterマジックメソッド。

このメソッドは、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 メソッド

定義: yii\db\BaseActiveRecord::__unset()

コンポーネントプロパティを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

エラーのリスト。配列キーは属性名である必要があります。配列の値はエラーメッセージである必要があります。1 つの属性に複数のエラーがある場合は、これらのエラーを配列で指定する必要があります。このパラメータの値として 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 メソッド

定義: yii\db\BaseActiveRecord::afterDelete()

レコードの削除後にこのメソッドが呼び出されます。

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

public void afterDelete ( )

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

            
afterFind() public メソッド

定義場所: yii\db\BaseActiveRecord::afterFind()

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

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

public void afterFind ( )

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

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

定義場所: yii\db\BaseActiveRecord::afterRefresh()

ARオブジェクトが更新されたときに、このメソッドが呼び出されます。

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

public void afterRefresh ( )

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

            
afterSave() public メソッド

定義場所: yii\db\BaseActiveRecord::afterSave()

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

デフォルトの実装では、$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 が与えられた場合、属性の意味をユーザーフレンドリーに説明し、エンドユーザーに表示できるヒント 非ログインユーザーに投稿を表示するかどうか を宣言できます。

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

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

public array attributeHints ( )
return array

属性ヒント (name => hint)

                public function attributeHints()
{
    return [];
}

            
attributeLabels() public メソッド

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

属性ラベルを返します。

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

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

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

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

public array attributeLabels ( )
return array

属性ラベル (name => label)

                public function attributeLabels()
{
    return [];
}

            
attributes() public メソッド

モデルのすべての属性名のリストを返します。

デフォルトの実装では、このARクラスに関連付けられたテーブルのすべてのカラム名を返します。

public array attributes ( )
return array

属性名のリスト。

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

            
beforeDelete() public メソッド

定義元: yii\db\BaseActiveRecord::beforeDelete()

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

デフォルトの実装では、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 メソッド

定義元: yii\db\BaseActiveRecord::beforeSave()

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

デフォルトの実装では、$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 メソッド

定義元: yii\db\BaseActiveRecord::canGetProperty()

プロパティが読み取り可能かどうかを示す値を返します。

プロパティは、次の場合に読み取り可能です。

  • クラスが指定された名前に関連付けられたゲッターメソッドを持っている場合(この場合、プロパティ名は大小文字を区別しません)。
  • クラスが指定された名前のメンバ変数を持っている場合($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 メソッド

定義元: yii\db\BaseActiveRecord::canSetOldAttribute()

古い名前付き属性が設定可能かどうかを返します。

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

public boolean canSetOldAttribute ( $name )
$name string

属性名

return boolean

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

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

            
canSetProperty() public メソッド

定義元: yii\db\BaseActiveRecord::canSetProperty()

プロパティが設定可能かどうかを示す値を返します。

プロパティは、次の場合に書き込み可能です。

  • クラスが指定された名前に関連付けられたセッターメソッドを持っている場合(この場合、プロパティ名は大小文字を区別しません)。
  • クラスが指定された名前のメンバ変数を持っている場合($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 から利用可能)

定義場所: yii\db\BaseActiveRecord::createRelationQuery()

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 Throwable

削除に失敗した場合。

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

            
deleteAll() public static メソッド

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

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

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

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

このメソッドはイベントをトリガーしないことに注意してください。EVENT_BEFORE_DELETE または EVENT_AFTER_DELETE をトリガーする必要がある場合は、最初にモデルを find し、次にそれぞれのモデルで delete() を呼び出す必要があります。たとえば、上記の例と同等のものは次のようになります。

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

モデルのセットが大きい場合は、メモリ使用量を制限するために、yii\db\ActiveQuery::each() の使用を検討してください。

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

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

$params array

クエリにバインドされるパラメータ(name => value)。

return integer

削除された行数

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

            
deleteInternal() protected メソッド

トランザクションを考慮せずに ActiveRecord を削除します。

protected integer|false deleteInternal ( )
return integer|false

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

throws yii\db\StaleObjectException

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

            
detachBehavior() public メソッド

定義場所: 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\ActiveRecord

比較するレコード

return boolean

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

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

            
extraFields() public メソッド

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

toArray() でさらに展開して返せるフィールドのリストを返します。

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

デフォルトの実装では、空の配列を返します。

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

参考

public array extraFields ( )
return array

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

                public function extraFields()
{
    return [];
}

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

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

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

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

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

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

例えば、以下のコードは4つのフィールドを宣言します。

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

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

このメソッドのデフォルトの実装では、publicなオブジェクトのメンバー変数が、それ自身をインデックスとして返されます。

また、toArray() も参照してください。

public array fields ( )
return array

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

                public function fields()
{
    $fields = array_keys(Yii::getObjectVars($this));
    return array_combine($fields, $fields);
}

            
find() public static メソッド

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

返される yii\db\ActiveQueryInterface インスタンスは、populateされたActiveRecordインスタンスを返すために one() または all() が呼び出される前に、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 static yii\db\ActiveQuery find ( )
return yii\db\ActiveQuery

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

                public static function find()
{
    return Yii::createObject(ActiveQuery::className(), [get_called_class()]);
}

            
findAll() public static メソッド

定義元: yii\db\BaseActiveRecord::findAll()

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

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

  • スカラー値(整数または文字列):単一の主キー値でクエリを実行し、対応するレコードを含む配列を返します(見つからない場合は空の配列)。
  • 非連想配列:主キー値のリストでクエリを実行し、対応するレコードを返します(見つからなかった場合は空の配列)。空の条件は、主キーの検索として解釈され、空の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 yii\db\BaseActiveRecord[]

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

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

            
findBySql() public static メソッド

指定された SQL ステートメントで yii\db\ActiveQuery インスタンスを作成します。

SQLステートメントが既に指定されているため、作成された yii\db\ActiveQuery インスタンスで追加のクエリ変更メソッド(where()order()など)を呼び出しても効果がないことに注意してください。ただし、with()asArray()、または indexBy() を呼び出すことは問題ありません。

以下に例を示します。

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

実行するSQLステートメント

$params array

実行中にSQLステートメントにバインドされるパラメーター。

return yii\db\ActiveQuery

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

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

            
findOne() public static メソッド

定義元: yii\db\BaseActiveRecord::findOne()

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

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

  • スカラー値(整数または文字列):単一の主キー値でクエリを実行し、対応するレコードを返します(見つからない場合は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 yii\db\BaseActiveRecord|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 メソッド

定義元: yii\db\BaseActiveRecord::getAttribute()

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

このレコードがクエリの結果であり、属性がロードされていない場合は、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 以降で利用可能)

定義元: yii\db\BaseActiveRecord::getAttributeHint()

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

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

定義元: yii\db\BaseActiveRecord::getAttributeLabel()

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

属性は、関連モデルからラベルを取得したり、このモデルが関連モデルで定義されたラベルをオーバーライドできるように、ドット形式で指定できます。たとえば、属性が '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 static メソッド

この AR クラスで使用されるデータベース接続を返します。

デフォルトでは、"db" アプリケーションコンポーネントがデータベース接続として使用されます。別のデータベース接続を使用する場合は、このメソッドをオーバーライドできます。

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

この AR クラスが使用するデータベース接続。

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

            
getDirtyAttributes() public メソッド

定義元: yii\db\BaseActiveRecord::getDirtyAttributes()

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

新旧の値の比較は、=== を使って同一の値に対して行われます。

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

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

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

定義元: yii\db\BaseActiveRecord::getIsNewRecord()

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

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

定義元: yii\db\BaseActiveRecord::getOldAttribute()

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

このレコードがクエリの結果であり、属性がロードされていない場合は、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 メソッド

定義元: yii\db\BaseActiveRecord::getOldAttributes()

古い属性値を返します。

public array getOldAttributes ( )
return array

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

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

            
getOldPrimaryKey() public メソッド

定義元: yii\db\BaseActiveRecord::getOldPrimaryKey()

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

これは、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 メソッド

定義元: yii\db\BaseActiveRecord::getPrimaryKey()

主キー値を返します。

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

定義場所: yii\db\BaseActiveRecord::getRelatedRecords()

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

関連情報: getRelation().

public array getRelatedRecords ( )
return array

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

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

            
getRelation() public メソッド

定義場所: yii\db\BaseActiveRecord::getRelation()

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

リレーションは、yii\db\ActiveQueryInterface オブジェクトを返す getter メソッドによって定義されます。これは、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;
}

            
getTableSchema() public static メソッド

この AR クラスに関連付けられた DB テーブルのスキーマ情報を返します。

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

この AR クラスに関連付けられた DB テーブルのスキーマ情報。

throws yii\base\InvalidConfigException

AR クラスのテーブルが存在しない場合。

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

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

定義場所: yii\db\BaseActiveRecord::hasAttribute()

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

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

詳細については、yii\db\BaseActiveRecord::hasMany() を参照してください。

public yii\db\ActiveQuery hasMany ( $class, array $link )
$class
$link
return yii\db\ActiveQuery
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 メソッド

詳細については、yii\db\BaseActiveRecord::hasOne() を参照してください。

public yii\db\ActiveQuery hasOne ( $class, array $link )
$class
$link
return yii\db\ActiveQuery
hasProperty() public メソッド

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

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

プロパティは以下の場合に定義されているとみなされます。

  • クラスが指定された名前に関連付けられた getter または setter メソッドを持っている場合 (この場合、プロパティ名は大文字小文字を区別しません)。
  • クラスが指定された名前のメンバ変数を持っている場合($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 メソッド

定義元: yii\db\BaseActiveRecord::init()

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

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

public void init ( )

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

            
insert() public メソッド

このレコードの属性値を使用して、関連付けられたデータベーステーブルに行を挿入します。

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

  1. $runValidationtrue の場合、beforeValidate() を呼び出します。beforeValidate()false を返した場合、残りのステップはスキップされます。
  2. $runValidationtrue の場合、afterValidate() を呼び出します。バリデーションが失敗した場合、残りのステップはスキップされます。
  3. beforeSave() を呼び出します。beforeSave()false を返した場合、残りのステップはスキップされます。
  4. レコードをデータベースに挿入します。これが失敗した場合、残りのステップはスキップされます。
  5. afterSave() を呼び出します。

上記のステップ 1, 2, 3, および 5 では、EVENT_BEFORE_VALIDATE, EVENT_AFTER_VALIDATE, EVENT_BEFORE_INSERT, および EVENT_AFTER_INSERT のイベントが、対応するメソッドによって発生します。

変更された属性の値のみがデータベースに挿入されます。

テーブルの主キーが自動インクリメントで、挿入時に null の場合、挿入後に実際の値が設定されます。

例として、顧客レコードを挿入するには:

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

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

$attributes array|null

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

return boolean

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

throws Throwable

挿入が失敗した場合。

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

            
insertInternal() protected メソッド

トランザクションを考慮せずに ActiveRecord を DB に挿入します。

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

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

return boolean

レコードが正常に挿入されたかどうか。

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

            
instance() public static メソッド

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

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

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

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

return yii\db\ActiveRecord

クラスインスタンス。

                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\BaseActiveRecord::instantiate()

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

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

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

public static static instantiate ( $row )
$row array

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

return yii\db\BaseActiveRecord

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

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

定義元: yii\db\BaseActiveRecord::isAttributeChanged()

名前付き属性が変更されたかどうかを示す値を返します。

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

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

これは、現在の$scenarioにおいて、属性がrequiredバリデーションルールに関連付けられているかどうかをチェックすることで決定されます。

バリデーターが$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 メソッド

定義場所: yii\db\BaseActiveRecord::isPrimaryKey()

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

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

定義場所: yii\db\BaseActiveRecord::isRelationPopulated()

名前付き関連がレコードで設定されているかどうかを確認します。

関連情報: getRelation().

public boolean isRelationPopulated ( $name )
$name string

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

return boolean

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

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

            
isTransactional() public メソッド

指定された操作が現在の $scenario でトランザクションであるかどうかを示す値を返します。

public boolean isTransactional ( $operation )
$operation integer

チェックする操作。OP_INSERTOP_UPDATEOP_DELETEの値が可能です。

return boolean

現在の$scenarioにおいて、指定された操作がトランザクションであるかどうか。

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

            
link() public メソッド

定義場所: yii\db\BaseActiveRecord::link()

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

            
loadDefaultValues() public メソッド

データベーステーブルスキーマからデフォルト値をロードします。

新しいインスタンスを作成した後で、このメソッドを呼び出してデフォルト値をロードできます。

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

既存の値を保持するかどうか。これは、nullである属性のデフォルトのみを設定します。

return $this

モデルインスタンス自体。

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

            
loadMultiple() public static メソッド

定義場所: 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から利用可能)

定義場所: yii\db\BaseActiveRecord::loadRelations()

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

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

$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から利用可能)

定義場所: yii\db\BaseActiveRecord::loadRelationsFor()

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

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

$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

定義場所: yii\db\BaseActiveRecord::markAttributeDirty()

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

このメソッドは、レコードに何も変更が加えられていない場合でも、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

定義場所: yii\db\BaseActiveRecord::offsetExists()

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

このメソッドは、インターフェース 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 method

定義場所: yii\db\BaseActiveRecord::offsetUnset()

指定されたオフセットの要素値を 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 method

定義場所: 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\BaseActiveRecord::optimisticLock()

楽観的ロックを実装するためのロックバージョンを保存する列の名前を返します。

楽観的ロックを使用すると、複数のユーザーが編集のために同じレコードにアクセスでき、潜在的な競合を回避できます。ユーザーが古いデータに基づいてレコードを保存しようとした場合(別のユーザーがデータを変更したため)、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 = static::getTableSchema()->columns;
    foreach ($row as $name => $value) {
        if (isset($columns[$name])) {
            $row[$name] = $columns[$name]->phpTypecast($value);
        }
    }
    parent::populateRecord($record, $row);
}

            
populateRelation() public メソッド

定義元: yii\db\BaseActiveRecord::populateRelation()

名前付きの関連に関連レコードを設定します。

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

関連情報: 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 static メソッド

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

デフォルトの実装では、この AR クラスに関連付けられている DB テーブルで宣言されている主キーを返します。

DB テーブルが主キーを宣言していない場合は、このメソッドをオーバーライドして、この AR クラスの主キーとして使用する属性を返す必要があります。

単一の主キーを持つテーブルの場合でも、配列を返す必要があることに注意してください。

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

関連付けられたデータベーステーブルの主キー。

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

            
refresh() public メソッド

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

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

public boolean refresh ( )
return boolean

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

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

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

定義元: yii\db\BaseActiveRecord::refreshInternal()

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

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

定義元: 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 メソッド

定義元: 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 メソッド

定義元: yii\db\BaseActiveRecord::save()

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

このメソッドは、$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 メソッド

定義元: 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 メソッド

定義元: yii\db\BaseActiveRecord::setAttribute()

名前付き属性値を設定します。

こちらも参照してください 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 メソッド

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

属性値を大量に設定します。

参考

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

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

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

定義元: yii\db\BaseActiveRecord::setIsNewRecord()

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

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

public void setIsNewRecord ( $value )
$value boolean

レコードが新規であり、save()を呼び出すときに挿入される必要があるかどうか。

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

            
setOldAttribute() public メソッド

定義元: yii\db\BaseActiveRecord::setOldAttribute()

名前付き属性の古い値を設定します。

こちらも参照してください 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 メソッド

定義元: yii\db\BaseActiveRecord::setOldAttributes()

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

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

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

            
tableName() public static メソッド

この AR クラスに関連付けられたデータベーステーブルの名前を宣言します。

デフォルトでは、このメソッドは yii\helpers\Inflector::camel2id() を呼び出し、プレフィックス yii\db\Connection::$tablePrefix を使用してクラス名をテーブル名として返します。 たとえば、yii\db\Connection::$tablePrefixtbl_ の場合、Customertbl_customer になり、OrderItemtbl_order_item になります。テーブルがこの規約に従って命名されていない場合は、このメソッドをオーバーライドできます。

public static string tableName ( )
return string

テーブル名

                public static function tableName()
{
    return '{{%' . Inflector::camel2id(StringHelper::basename(get_called_class()), '_') . '}}';
}

            
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() で宣言されたフィールドのみが考慮されます。expand もドット (.) で区切られたネストされたものにすることができます。例:item.expand1.expand2。ネストされた expand を抽出するには、$recursive が true である必要があります。$recursive が false の場合、ルート expand のみが抽出されます。

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

            
transactions() public メソッド

異なるシナリオでどの DB 操作をトランザクション内で実行するかを宣言します。

サポートされているDB操作は、OP_INSERTOP_UPDATE、および OP_DELETE で、それぞれ insert()update()、および delete() メソッドに対応します。 デフォルトでは、これらのメソッドはDBトランザクションで囲まれていません。

一部のシナリオでは、データの整合性を確保するために、一部またはすべての操作をトランザクションで囲む必要がある場合があります。 これを行うには、このメソッドをオーバーライドして、トランザクションにする必要がある操作を返します。 例:

return [
    'admin' => self::OP_INSERT,
    'api' => self::OP_INSERT | self::OP_UPDATE | self::OP_DELETE,
    // the above is equivalent to the following:
    // 'api' => self::OP_ALL,

];

上記の宣言では、「admin」シナリオでは、挿入操作(insert()) をトランザクションで実行する必要があり、「api」シナリオでは、すべての操作をトランザクションで実行する必要があることを指定します。

public array transactions ( )
return array

トランザクション操作の宣言。配列のキーはシナリオ名で、配列の値は対応するトランザクション操作です。

                public function transactions()
{
    return [];
}

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

定義元: yii\db\BaseActiveRecord::unlink()

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

定義元: yii\db\BaseActiveRecord::unlinkAll()

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

$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 Throwable

更新が失敗した場合。

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

            
updateAll() public static メソッド

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

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

Customer::updateAll(['status' => 1], 'status = 2');

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

このメソッドはイベントをトリガーしないことに注意してください。 EVENT_BEFORE_UPDATEまたはEVENT_AFTER_UPDATEをトリガーする必要がある場合は、まずモデルをfindし、それぞれでupdate()を呼び出す必要があります。たとえば、上記の例と同等のものは次のようになります。

$models = Customer::find()->where('status = 2')->all();
foreach ($models as $model) {
    $model->status = 1;
    $model->update(false); // skipping validation as no user input is involved
}

モデルのセットが大きい場合は、メモリ使用量を制限するために、yii\db\ActiveQuery::each() の使用を検討してください。

public static integer updateAll ( $attributes, $condition '', $params = [] )
$attributes array

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

$condition string|array

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

$params array

クエリにバインドされるパラメータ(name => value)。

return integer

更新された行数

                public static function updateAll($attributes, $condition = '', $params = [])
{
    $command = static::getDb()->createCommand();
    $command->update(static::tableName(), $attributes, $condition, $params);
    return $command->execute();
}

            
updateAllCounters() public static メソッド

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

たとえば、すべての顧客の年齢を1ずつ増やすには、

Customer::updateAllCounters(['age' => 1]);

このメソッドはイベントをトリガーしないことに注意してください。

public static integer updateAllCounters ( $counters, $condition '', $params = [] )
$counters array

更新するカウンター(属性名 => 増分値)。カウンターをデクリメントする場合は、負の値を使用します。

$condition string|array

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

$params array

クエリにバインドするパラメーター(名前 => 値)。パラメーターに:bp0:bp1などの名前を付けないでください。これらはこのメソッドで内部的に使用されるためです。

return integer

更新された行数

                public static function updateAllCounters($counters, $condition = '', $params = [])
{
    $n = 0;
    foreach ($counters as $name => $value) {
        $counters[$name] = new Expression("[[$name]]+:bp{$n}", [":bp{$n}" => $value]);
        $n++;
    }
    $command = static::getDb()->createCommand();
    $command->update(static::tableName(), $counters, $condition, $params);
    return $command->execute();
}

            
updateAttributes() public メソッド

定義: yii\db\BaseActiveRecord::updateAttributes()

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

このメソッドは、データの検証が不要で、少数の属性のみを更新する必要がある場合に、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 メソッド

定義: yii\db\BaseActiveRecord::updateCounters()

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

定義: yii\db\BaseActiveRecord::updateInternal()

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 method

定義元: 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;
}