Skip to content

Commit

Permalink
Add upgrade note for 2.0.50 (#20200)
Browse files Browse the repository at this point in the history
  • Loading branch information
terabytesoftw authored Jul 1, 2024
1 parent 883e1d8 commit 97466bd
Showing 1 changed file with 108 additions and 0 deletions.
108 changes: 108 additions & 0 deletions framework/UPGRADE.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,114 @@ if you want to upgrade from version A to version C and there is
version B between A and C, you need to follow the instructions
for both A and B.

Upgrade from Yii 2.0.50
-----------------------

* Correcting the behavior for `JSON` column type in `MariaDb`.

Example usage of `JSON` column type in `db`:

```php
<?php

use yii\db\Schema;

$db = Yii::$app->db;
$command = $db->createCommand();

// Create a table with a JSON column
$command->createTable(
'products',
[
'id' => Schema::TYPE_PK,
'details' => Schema::TYPE_JSON,
],
)->execute();

// Insert a new product
$command->insert(
'products',
[
'details' => [
'name' => 'apple',
'price' => 100,
'color' => 'blue',
'size' => 'small',
],
],
)->execute();

// Read all products
$records = $db->createCommand('SELECT * FROM products')->queryAll();
```

Example usage of `JSON` column type in `ActiveRecord`:

```php
<?php

namespace app\model;

use yii\db\ActiveRecord;

class ProductModel extends ActiveRecord
{
public static function tableName()
{
return 'products';
}

public function rules()
{
return [
[['details'], 'safe'],
];
}
}
```

```php
<?php

use app\model\ProductModel;

// Create a new product
$product = new ProductModel();

// Set the product details
$product->details = [
'name' => 'windows',
'color' => 'red',
'price' => 200,
'size' => 'large',
];

// Save the product
$product->save();

// Read the first product
$product = ProductModel::findOne(1);

// Get the product details
$details = $product->details;

echo 'Name: ' . $details['name'];
echo 'Color: ' . $details['color'];
echo 'Size: ' . $details['size'];

// Read all products with color red
$products = ProductModel::find()
->where(new \yii\db\Expression('JSON_EXTRACT(details, "$.color") = :color', [':color' => 'red']))
->all();

// Loop through all products
foreach ($products as $product) {
$details = $product->details;
echo 'Name: ' . $details['name'];
echo 'Color: ' . $details['color'];
echo 'Size: ' . $details['size'];
}
```

Upgrade from Yii 2.0.48
-----------------------
Expand Down

0 comments on commit 97466bd

Please sign in to comment.