クラス yii\db\JsonExpression
継承 | yii\db\JsonExpression |
---|---|
実装 | JsonSerializable, yii\db\ExpressionInterface |
利用可能なバージョン | 2.0.14 |
ソースコード | https://github.com/yiisoft/yii2/blob/master/framework/db/JsonExpression.php |
クラス JsonExpression は、JSON にエンコードされるべきデータを表します。
例:
new JsonExpression(['a' => 1, 'b' => 2]); // will be encoded to '{"a": 1, "b": 2}'
公開メソッド
メソッド | 説明 | 定義元 |
---|---|---|
__construct() | JsonExpression コンストラクタ。 | yii\db\JsonExpression |
getType() | yii\db\JsonExpression | |
getValue() | yii\db\JsonExpression | |
jsonSerialize() | JSON にシリアライズされるべきデータを指定します。 | yii\db\JsonExpression |
定数
定数 | 値 | 説明 | 定義元 |
---|---|---|---|
TYPE_JSON | 'json' | yii\db\JsonExpression | |
TYPE_JSONB | 'jsonb' | yii\db\JsonExpression |
プロパティの詳細
JSON の型。式がキャストされるべき型です。デフォルトは null
で、明示的なキャストは実行されません。このプロパティは、異なる JSON 型をサポートする DBMS でのみ使用されます。たとえば、PostgreSQL には json
型と jsonb
型があります。
JSON にエンコードされる値。値は、[\yii\helpers\Json::encode()|Json::encode()]] の入力要件と互換性がある必要があります。
メソッドの詳細
JsonExpression コンストラクタ。
$type も参照してください。
public void __construct ( $value, $type = null ) | ||
$value | mixed |
JSON にエンコードされる値。値は、[\yii\helpers\Json::encode()|Json::encode()]] の要件と互換性がある必要があります。 |
$type | string|null |
JSON の型。yii\db\JsonExpression::$type を参照してください。 |
public function __construct($value, $type = null)
{
if ($value instanceof self) {
$value = $value->getValue();
}
$this->value = $value;
$this->type = $type;
}
$type も参照してください。
public string|null getType ( ) | ||
戻り値 | string|null |
JSON の型 |
---|
public function getType()
{
return $this->type;
}
JSON にシリアライズされるべきデータを指定します。
public mixed jsonSerialize ( ) | ||
戻り値 | mixed |
json_encode によってシリアライズ可能なデータ。リソース以外の任意の型の値です。 |
---|---|---|
throws | yii\base\InvalidConfigException |
JsonExpression が QueryInterface オブジェクトを含む場合 |
#[\ReturnTypeWillChange]
public function jsonSerialize()
{
$value = $this->getValue();
if ($value instanceof QueryInterface) {
throw new InvalidConfigException('The JsonExpression class can not be serialized to JSON when the value is a QueryInterface object');
}
return $value;
}
サインアップ または ログイン してコメントしてください。