0 フォロワー

クラス yii\data\SqlDataProvider

継承yii\data\SqlDataProvider » yii\data\BaseDataProvider » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurable, yii\data\DataProviderInterface
利用可能バージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/data/SqlDataProvider.php

SqlDataProvider は、プレーンな SQL ステートメントに基づいてデータを提供するデータプロバイダを実装します。

SqlDataProvider は、クエリ結果の行を表す配列の形式でデータを提供します。

他のデータプロバイダと同様に、SqlDataProvider はソートとページネーションもサポートしています。これは、指定された $sql ステートメントを "ORDER BY" および "LIMIT" 句で変更することによって行われます。 $sort および $pagination プロパティを構成して、ソートとページネーションの動作をカスタマイズできます。

SqlDataProvider は次のように使用できます

$count = Yii::$app->db->createCommand('
    SELECT COUNT(*) FROM user WHERE status=:status
', [':status' => 1])->queryScalar();

$dataProvider = new SqlDataProvider([
    'sql' => 'SELECT * FROM user WHERE status=:status',
    'params' => [':status' => 1],
    'totalCount' => $count,
    'sort' => [
        'attributes' => [
            'age',
            'name' => [
                'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC],
                'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC],
                'default' => SORT_DESC,
                'label' => 'Name',
            ],
        ],
    ],
    'pagination' => [
        'pageSize' => 20,
    ],
]);

// get the user records in the current page
$models = $dataProvider->getModels();

注意: ページネーション機能を使用する場合は、$totalCount プロパティを (ページネーションなしの) 行の合計数に構成する必要があります。また、ソート機能を使用する場合は、プロバイダがどの列をソートできるかを認識できるように、$sort プロパティを構成する必要があります。

SqlDataProvider の詳細および使用法については、データプロバイダに関するガイド記事を参照してください。

パブリックプロパティ

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

プロパティ 説明 定義元
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$count integer 現在のページにあるデータモデルの数。 yii\data\BaseDataProvider
$db yii\db\Connection|array|string DB 接続オブジェクト、または DB 接続のアプリケーションコンポーネント ID。 yii\data\SqlDataProvider
$id string|null すべてのデータプロバイダ間でデータプロバイダを一意に識別する ID。 yii\data\BaseDataProvider
$key string|callable|null データモデルのキーとして使用される列。 yii\data\SqlDataProvider
$keys array $models に対応するキー値のリスト。 yii\data\BaseDataProvider
$models array 現在のページにあるデータモデルのリスト。 yii\data\BaseDataProvider
$pagination yii\data\Pagination|false ページネーションオブジェクト。 yii\data\BaseDataProvider
$params array SQL ステートメントにバインドされるパラメータ (name=>value)。 yii\data\SqlDataProvider
$sort yii\data\Sort|boolean ソートオブジェクト。 yii\data\BaseDataProvider
$sql string データ行のフェッチに使用する SQL ステートメント。 yii\data\SqlDataProvider
$totalCount integer 可能なデータモデルの合計数。 yii\data\BaseDataProvider

パブリックメソッド

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

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、既存のオブジェクトをクローンしてオブジェクトを作成した後に呼び出されます。 yii\base\Component
__construct() コンストラクタ。 yii\base\BaseObject
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されているか (つまり、定義されており、null ではないか) を確認します。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__unset() コンポーネントプロパティを null に設定します。 yii\base\Component
attachBehavior() このコンポーネントにビヘイビアをアタッチします。 yii\base\Component
attachBehaviors() コンポーネントにビヘイビアのリストをアタッチします。 yii\base\Component
behaviors() このコンポーネントが動作するビヘイビアのリストを返します。 yii\base\Component
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\Component
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors() で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
getBehavior() 名前付きビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされたすべてのビヘイビアを返します。 yii\base\Component
getCount() 現在のページにあるデータモデルの数を返します。 yii\data\BaseDataProvider
getKeys() データモデルに関連付けられたキー値を返します。 yii\data\BaseDataProvider
getModels() 現在のページにあるデータモデルを返します。 yii\data\BaseDataProvider
getPagination() このデータプロバイダで使用されるページネーションオブジェクトを返します。 yii\data\BaseDataProvider
getSort() このデータプロバイダで使用されるソートオブジェクトを返します。 yii\data\BaseDataProvider
getTotalCount() データモデルの総数を返します。 yii\data\BaseDataProvider
hasEventHandlers() 名前付きイベントにアタッチされたハンドラがあるかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() プロパティがこのコンポーネントで定義されているかどうかを示す値を返します。 yii\base\Component
init() DB 接続コンポーネントを初期化します。 yii\data\SqlDataProvider
off() このコンポーネントから既存のイベントハンドラをデタッチします。 yii\base\Component
on() イベントにイベントハンドラをアタッチします。 yii\base\Component
prepare() データモデルとキーを準備します。 yii\data\BaseDataProvider
refresh() データプロバイダをリフレッシュします。 yii\data\BaseDataProvider
setKeys() データモデルに関連付けられたキー値を設定します。 yii\data\BaseDataProvider
setModels() 現在のページのデータモデルを設定します。 yii\data\BaseDataProvider
setPagination() このデータプロバイダのページネーションを設定します。 yii\data\BaseDataProvider
setSort() このデータプロバイダーのソート定義を設定します。 yii\data\BaseDataProvider
setTotalCount() データモデルの総数を設定します。 yii\data\BaseDataProvider
trigger() イベントを発生させます。 yii\base\Component

保護されたメソッド

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

メソッド 説明 定義元
prepareKeys() 現在利用可能なデータモデルに関連付けられたキーを準備します。 yii\data\SqlDataProvider
prepareModels() 現在のページで利用可能になるデータモデルを準備します。 yii\data\SqlDataProvider
prepareTotalCount() このデータプロバイダーのデータモデルの総数を示す値を返します。 yii\data\SqlDataProvider

プロパティの詳細

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

$db public プロパティ

DB接続オブジェクトまたはDB接続のアプリケーションコンポーネントID。バージョン2.0.2以降、オブジェクトを作成するための構成配列も可能です。

$key public プロパティ

データモデルのキーとして使用される列。これは、列名、または特定のデータモデルのキー値を返すコールバックのいずれかです。

これが設定されていない場合、$models配列のキーが使用されます。

public string|callable|null $key null
$params public プロパティ

SQL ステートメントにバインドされるパラメータ (name=>value)。

public array $params = []
$sql public プロパティ

データ行のフェッチに使用する SQL ステートメント。

public string $sql null

メソッドの詳細

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

__call() public メソッド

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

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

このメソッドは、アタッチされた動作に名前付きメソッドがあるかどうかを確認し、利用可能な場合はそれを実行します。

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

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

メソッド名

$params array

メソッドパラメータ

戻り値 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\Component::__clone()

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

古いオブジェクトにアタッチされているため、すべての動作を削除します。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = 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\base\Component::__get()

コンポーネントプロパティの値を返します。

このメソッドは、次の順序で確認し、それに応じて動作します

  • getterで定義されたプロパティ:getterの結果を返します
  • 動作のプロパティ:動作のプロパティ値を返します

$value = $component->property;を実行するときに暗黙的に呼び出されるPHPマジックメソッドであるため、このメソッドを直接呼び出さないでください。

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

public mixed __get ( $name )
$name string

プロパティ名

戻り値 mixed

プロパティ値または動作のプロパティの値

throws yii\base\UnknownPropertyException

プロパティが定義されていない場合

throws yii\base\InvalidCallException

プロパティが書き込み専用の場合。

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() public メソッド

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

プロパティが設定されているか (つまり、定義されており、null ではないか) を確認します。

このメソッドは、次の順序で確認し、それに応じて動作します

  • setterで定義されたプロパティ:プロパティが設定されているかどうかを返します
  • 動作のプロパティ:プロパティが設定されているかどうかを返します
  • 存在しないプロパティの場合はfalseを返します

isset($component->property)を実行するときに暗黙的に呼び出されるPHPマジックメソッドであるため、このメソッドを直接呼び出さないでください。

https://www.php.net/manual/en/function.isset.phpも参照してください。

public boolean __isset ( $name )
$name string

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

戻り値 boolean

名前付きプロパティが設定されているかどうか

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() public メソッド

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

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

このメソッドは、次の順序で確認し、それに応じて動作します

  • setterで定義されたプロパティ:プロパティ値を設定します
  • 「on xyz」の形式のイベント:「xyz」イベントにハンドラーをアタッチします
  • 「as xyz」の形式の動作:「xyz」という名前の動作をアタッチします
  • 動作のプロパティ:動作のプロパティ値を設定します

$component->property = $value;を実行するときに暗黙的に呼び出されるPHPマジックメソッドであるため、このメソッドを直接呼び出さないでください。

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

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

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

$value mixed

プロパティの値

throws yii\base\UnknownPropertyException

プロパティが定義されていない場合

throws yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() public メソッド

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

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

このメソッドは、次の順序で確認し、それに応じて動作します

  • セッターによって定義されたプロパティ: プロパティ値を null に設定します。
  • ビヘイビアのプロパティ: プロパティ値を null に設定します。

unset($component->property) を実行すると暗黙的に呼び出される PHP のマジックメソッドであるため、このメソッドを直接呼び出さないでください。

参照: https://www.php.net/manual/en/function.unset.php.

public void __unset ( $name )
$name string

プロパティ名

throws yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
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() に渡してビヘイビアオブジェクトを作成するオブジェクト構成配列。
戻り値 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);
    }
}

            
behaviors() public メソッド

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

このコンポーネントが動作するビヘイビアのリストを返します。

子クラスは、このメソッドをオーバーライドして、それらがどのように動作するかを指定できます。

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

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

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

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

public array behaviors ( )
戻り値 array

ビヘイビアの構成。

                public function behaviors()
{
    return [];
}

            
canGetProperty() public メソッド

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

プロパティを読み取ることができるかどうかを示す値を返します。

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

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

参照: canSetProperty().

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

戻り値 boolean

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

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() public メソッド

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

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

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

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

参照: canGetProperty().

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

戻り値 boolean

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

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
className() public static メソッド
2.0.14 以降非推奨。PHP >=5.5 では、::class を代わりに使用してください。

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

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

public static string className ( )
戻り値 string

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

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

            
detachBehavior() public メソッド

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

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

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

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

ビヘイビアの名前。

戻り値 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);
        }
    }
}

            
getBehavior() public メソッド

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

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

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

ビヘイビア名

戻り値 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 ( )
戻り値 yii\base\Behavior[]

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

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

            
getCount() public メソッド

定義元: yii\data\BaseDataProvider::getCount()

現在のページにあるデータモデルの数を返します。

public integer getCount ( )
戻り値 integer

現在のページにあるデータモデルの数。

                public function getCount()
{
    return count($this->getModels());
}

            
getKeys() public メソッド

定義元: yii\data\BaseDataProvider::getKeys()

データモデルに関連付けられたキー値を返します。

public array getKeys ( )
戻り値 array

$models に対応するキー値のリスト。$models の各データモデルは、この配列内の対応するキー値によって一意に識別されます。

                public function getKeys()
{
    $this->prepare();
    return $this->_keys;
}

            
getModels() public メソッド

定義元: yii\data\BaseDataProvider::getModels()

現在のページにあるデータモデルを返します。

public array getModels ( )
戻り値 array

現在のページにあるデータモデルのリスト。

                public function getModels()
{
    $this->prepare();
    return $this->_models;
}

            
getPagination() public メソッド

定義元: yii\data\BaseDataProvider::getPagination()

このデータプロバイダで使用されるページネーションオブジェクトを返します。

yii\data\Pagination::$totalCount および yii\data\Pagination::$pageCount の正しい値を取得するには、最初に prepare() または getModels() を呼び出す必要があることに注意してください。

public yii\data\Pagination|false getPagination ( )
戻り値 yii\data\Pagination|false

ページネーションオブジェクト。これが false の場合、ページネーションが無効になっていることを意味します。

                public function getPagination()
{
    if ($this->_pagination === null) {
        $this->setPagination([]);
    }
    return $this->_pagination;
}

            
getSort() public メソッド

定義元: yii\data\BaseDataProvider::getSort()

このデータプロバイダで使用されるソートオブジェクトを返します。

public yii\data\Sort|boolean getSort ( )
戻り値 yii\data\Sort|boolean

ソートオブジェクト。これが false の場合、ソートが無効になっていることを意味します。

                public function getSort()
{
    if ($this->_sort === null) {
        $this->setSort([]);
    }
    return $this->_sort;
}

            
getTotalCount() public メソッド

定義元: yii\data\BaseDataProvider::getTotalCount()

データモデルの総数を返します。

$pagination が false の場合、これは $count と同じ値を返します。それ以外の場合は、prepareTotalCount() を呼び出してカウントを取得します。

public integer getTotalCount ( )
戻り値 integer

可能なデータモデルの合計数。

                public function getTotalCount()
{
    if ($this->getPagination() === false) {
        return $this->getCount();
    } elseif ($this->_totalCount === null) {
        $this->_totalCount = $this->prepareTotalCount();
    }
    return $this->_totalCount;
}

            
hasEventHandlers() public メソッド

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

名前付きイベントにアタッチされたハンドラがあるかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name string

イベント名

戻り値 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);
}

            
hasMethod() public メソッド

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

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

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

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

プロパティ名

$checkBehaviors boolean

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

戻り値 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;
}

            
hasProperty() public メソッド

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

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

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

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

参照

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

戻り値 boolean

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

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

            
init() public メソッド

DB 接続コンポーネントを初期化します。

このメソッドは、$db プロパティを初期化して、有効な DB 接続を参照するようにします。

public void init ( )
throws yii\base\InvalidConfigException

$db が無効な場合。

                public function init()
{
    parent::init();
    $this->db = Instance::ensure($this->db, Connection::className());
    if ($this->sql === null) {
        throw new InvalidConfigException('The "sql" property must be set.');
    }
}

            
off() public メソッド

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

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

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

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

以下も参照してください: on()

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

イベント名

$handler callable|null

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

戻り値 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;
}

            
on() public メソッド

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

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

イベントハンドラは有効なPHPコールバックである必要があります。以下にいくつかの例を示します。

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

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

function ($event)

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

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

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

以下も参照してください: off()

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

イベント名

$handler callable

イベントハンドラ

$data mixed

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

$append boolean

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

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

            
prepare() public メソッド

定義元: yii\data\BaseDataProvider::prepare()

データモデルとキーを準備します。

このメソッドは、getModels() および getKeys() を介して取得できるデータモデルとキーを準備します。

このメソッドは、以前に呼び出されていない場合、getModels() および getKeys() によって暗黙的に呼び出されます。

public void prepare ( $forcePrepare false )
$forcePrepare boolean

以前にデータ準備が完了している場合でも、強制的にデータ準備を行うかどうか。

                public function prepare($forcePrepare = false)
{
    if ($forcePrepare || $this->_models === null) {
        $this->_models = $this->prepareModels();
    }
    if ($forcePrepare || $this->_keys === null) {
        $this->_keys = $this->prepareKeys($this->_models);
    }
}

            
prepareKeys() protected メソッド

現在利用可能なデータモデルに関連付けられたキーを準備します。

protected array prepareKeys ( $models )
$models array

利用可能なデータモデル

戻り値 array

キー

                protected function prepareKeys($models)
{
    $keys = [];
    if ($this->key !== null) {
        foreach ($models as $model) {
            if (is_string($this->key)) {
                $keys[] = $model[$this->key];
            } else {
                $keys[] = call_user_func($this->key, $model);
            }
        }
        return $keys;
    }
    return array_keys($models);
}

            
prepareModels() protected メソッド

現在のページで利用可能になるデータモデルを準備します。

protected array prepareModels ( )
戻り値 array

利用可能なデータモデル

                protected function prepareModels()
{
    $sort = $this->getSort();
    $pagination = $this->getPagination();
    if ($pagination === false && $sort === false) {
        return $this->db->createCommand($this->sql, $this->params)->queryAll();
    }
    $sql = $this->sql;
    $orders = [];
    $limit = $offset = null;
    if ($sort !== false) {
        $orders = $sort->getOrders();
        $pattern = '/\s+order\s+by\s+([\w\s,\."`\[\]]+)$/i';
        if (preg_match($pattern, $sql, $matches)) {
            array_unshift($orders, new Expression($matches[1]));
            $sql = preg_replace($pattern, '', $sql);
        }
    }
    if ($pagination !== false) {
        $pagination->totalCount = $this->getTotalCount();
        $limit = $pagination->getLimit();
        $offset = $pagination->getOffset();
    }
    $sql = $this->db->getQueryBuilder()->buildOrderByAndLimit($sql, $orders, $limit, $offset);
    return $this->db->createCommand($sql, $this->params)->queryAll();
}

            
prepareTotalCount() protected メソッド

このデータプロバイダーのデータモデルの総数を示す値を返します。

protected integer prepareTotalCount ( )
戻り値 integer

このデータプロバイダーのデータモデルの総数。

                protected function prepareTotalCount()
{
    return (new Query([
        'from' => ['sub' => "({$this->sql})"],
        'params' => $this->params,
    ]))->count('*', $this->db);
}

            
refresh() public メソッド

定義元: yii\data\BaseDataProvider::refresh()

データプロバイダをリフレッシュします。

このメソッドを呼び出した後、getModels()getKeys() または getTotalCount() が再度呼び出された場合、それらはクエリを再実行し、利用可能な最新のデータを返します。

public void refresh ( )

                public function refresh()
{
    $this->_totalCount = null;
    $this->_models = null;
    $this->_keys = null;
}

            
setKeys() public メソッド

定義元: yii\data\BaseDataProvider::setKeys()

データモデルに関連付けられたキー値を設定します。

public void setKeys ( $keys )
$keys array

$models に対応するキー値のリスト。

                public function setKeys($keys)
{
    $this->_keys = $keys;
}

            
setModels() public メソッド

定義元: yii\data\BaseDataProvider::setModels()

現在のページのデータモデルを設定します。

public void setModels ( $models )
$models array

現在のページのモデル

                public function setModels($models)
{
    $this->_models = $models;
}

            
setPagination() public メソッド

定義元: yii\data\BaseDataProvider::setPagination()

このデータプロバイダのページネーションを設定します。

public void setPagination ( $value )
$value array|yii\data\Pagination|boolean

このデータプロバイダーで使用するページネーション。これは、次のいずれかになります。

  • ページネーションオブジェクトを作成するための構成配列。「class」要素のデフォルトは 'yii\data\Pagination' です。
  • yii\data\Pagination またはそのサブクラスのインスタンス
  • ページネーションを無効にする必要がある場合は false。
throws yii\base\InvalidArgumentException

                public function setPagination($value)
{
    if (is_array($value)) {
        $config = ['class' => Pagination::className()];
        if ($this->id !== null) {
            $config['pageParam'] = $this->id . '-page';
            $config['pageSizeParam'] = $this->id . '-per-page';
        }
        $this->_pagination = Yii::createObject(array_merge($config, $value));
    } elseif ($value instanceof Pagination || $value === false) {
        $this->_pagination = $value;
    } else {
        throw new InvalidArgumentException('Only Pagination instance, configuration array or false is allowed.');
    }
}

            
setSort() public メソッド

定義元: yii\data\BaseDataProvider::setSort()

このデータプロバイダーのソート定義を設定します。

public void setSort ( $value )
$value array|yii\data\Sort|boolean

このデータプロバイダーで使用するソート定義。これは、次のいずれかになります。

  • ソート定義オブジェクトを作成するための構成配列。「class」要素のデフォルトは 'yii\data\Sort' です。
  • yii\data\Sort またはそのサブクラスのインスタンス
  • ソートを無効にする必要がある場合は false。
throws yii\base\InvalidArgumentException

                public function setSort($value)
{
    if (is_array($value)) {
        $config = ['class' => Sort::className()];
        if ($this->id !== null) {
            $config['sortParam'] = $this->id . '-sort';
        }
        $this->_sort = Yii::createObject(array_merge($config, $value));
    } elseif ($value instanceof Sort || $value === false) {
        $this->_sort = $value;
    } else {
        throw new InvalidArgumentException('Only Sort instance, configuration array or false is allowed.');
    }
}

            
setTotalCount() public メソッド

定義元: yii\data\BaseDataProvider::setTotalCount()

データモデルの総数を設定します。

public void setTotalCount ( $value )
$value integer

データモデルの総数。

                public function setTotalCount($value)
{
    $this->_totalCount = $value;
}

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