Inheritance | yii\db\JsonExpression |
---|---|
Implements | JsonSerializable, yii\db\ExpressionInterface |
Available since version | 2.0.14 |
Source Code | https://github.com/yiisoft/yii2/blob/master/framework/db/JsonExpression.php |
Class JsonExpression represents data that should be encoded to JSON.
For example:
new JsonExpression(['a' => 1, 'b' => 2]); // will be encoded to '{"a": 1, "b": 2}'
Method | Description | Defined By |
---|---|---|
__construct() | JsonExpression constructor. | yii\db\JsonExpression |
getType() | yii\db\JsonExpression | |
getValue() | yii\db\JsonExpression | |
jsonSerialize() | Specify data which should be serialized to JSON | yii\db\JsonExpression |
Constant | Value | Description | Defined By |
---|---|---|---|
TYPE_JSON | 'json' | yii\db\JsonExpression | |
TYPE_JSONB | 'jsonb' | yii\db\JsonExpression |
Type of JSON, expression should be casted to. Defaults to null
, meaning
no explicit casting will be performed.
This property will be encountered only for DBMSs that support different types of JSON.
For example, PostgreSQL has json
and jsonb
types.
The value to be encoded to JSON. The value must be compatible with [\yii\helpers\Json::encode()|Json::encode()]] input requirements.
JsonExpression constructor.
See also $type.
The value to be encoded to JSON. The value must be compatible with [\yii\helpers\Json::encode()|Json::encode()]] requirements.
public function __construct($value, $type = null)
{
if ($value instanceof self) {
$value = $value->getValue();
}
$this->value = $value;
$this->type = $type;
}
See also $type.
public string|null getType ( ) | ||
return | string|null |
The type of JSON |
---|
public function getType()
{
return $this->type;
}
See also $value.
public function getValue()
{
return $this->value;
}
Specify data which should be serialized to JSON
public mixed jsonSerialize ( ) | ||
return | mixed |
Data which can be serialized by json_encode, which is a value of any type other than a resource. |
---|---|---|
throws | yii\base\InvalidConfigException |
when JsonExpression contains QueryInterface object |
#[\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;
}