Let's create a table in the database. If you don't know what migrations are, please check this blogpost.
php bin/console database:create-migration -p MatheusGontijoHelloWorld --name CreateNewTable
Result:
Creating migration...
Creating plugin-migration with namespace MatheusGontijo\HelloWorld\Migration in path custom/plugins/MatheusGontijoHelloWorld/src/Migration...
Creating core-migration ...
Migration created: "custom/plugins/MatheusGontijoHelloWorld/src/Migration/Migration1642875903CreateNewTable.php"
Please, add our SQL commands to create tables in the database. Edit the created file. In my example it's named Migration/Migration1642875903CreateNewTable.php
:
<?php declare(strict_types=1);
namespace MatheusGontijo\HelloWorld\Migration;
use Doctrine\DBAL\Connection;
use Shopware\Core\Framework\Migration\MigrationStep;
class Migration1642875903CreateNewTable extends MigrationStep
{
public function getCreationTimestamp(): int
{
return 1642875903;
}
public function update(Connection $connection): void
{
$query = <<<SQL
CREATE TABLE IF NOT EXISTS `matheusgontijo_conference` (
`id` binary(16) NOT NULL,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`location` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`created_at` datetime(3) DEFAULT NULL,
`updated_at` datetime(3) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
SQL;
$connection->executeStatement($query);
}
public function updateDestructive(Connection $connection): void
{
}
}
Run the following command to execute the migration:
php bin/console database:migrate MatheusGontijoHelloWorld --all
Result:
Get collection for identifier: "MatheusGontijoHelloWorld"
migrate Migrations
1/1 [============================] 100%
---------- ----------------------
Action Number of migrations
---------- ----------------------
Migrated 1 out of 1
---------- ----------------------
all migrations for identifier: "MatheusGontijoHelloWorld" executed
cleared the shopware cache
If everything went all right, you are able to see the the table created in the database!
That's was easy! Have a great day!