.. index:: single: Commands Commands ======== Phinx is run using a number of commands. The Create Command ------------------ The Create command is used to create a new migration file. It requires one argument and that is the name of the migration. The migration name should be specified in CamelCase format. .. code-block:: bash $ phinx create MyNewMigration Open the new migration file in your text editor to add your database transformations. Phinx creates migration files using the path specified in your ``phinx.yml`` file. Please see the :doc:`Configuration ` chapter for more information. You are able to override the template file used by Phinx by supplying an alternative template filename. .. code-block:: bash $ phinx create MyNewMigration --template="" You can also supply a template generating class. This class must implement the interface ``Phinx\Migration\CreationInterface``. .. code-block:: bash $ phinx create MyNewMigration --class="" In addition to providing the template for the migration, the class can also define a callback that will be called once the migration file has been generated from the template. You cannot use ``--template`` and ``--class`` together. The Init Command ---------------- The Init command (short for initialize) is used to prepare your project for Phinx. This command generates the ``phinx.yml`` file in the root of your project directory. .. code-block:: bash $ cd yourapp $ phinx init . Open this file in your text editor to setup your project configuration. Please see the :doc:`Configuration ` chapter for more information. The Migrate Command ------------------- The Migrate command runs all of the available migrations, optionally up to a specific version. .. code-block:: bash $ phinx migrate -e development To migrate to a specific version then use the ``--target`` parameter or ``-t`` for short. .. code-block:: bash $ phinx migrate -e development -t 20110103081132 The Rollback Command -------------------- The Rollback command is used to undo previous migrations executed by Phinx. It is the opposite of the Migrate command. You can rollback to the previous migration by using the ``rollback`` command with no arguments. .. code-block:: bash $ phinx rollback -e development To rollback all migrations to a specific version then use the ``--target`` parameter or ``-t`` for short. .. code-block:: bash $ phinx rollback -e development -t 20120103083322 Specifying 0 as the target version will revert all migrations. .. code-block:: bash $ phinx rollback -e development -t 0 The Status Command ------------------ The Status command prints a list of all migrations, along with their current status. You can use this command to determine which migrations have been run. .. code-block:: bash $ phinx status -e development Configuration File Parameter ---------------------------- When running Phinx from the command line, you may specify a configuration file using the ``--configuration`` or ``-c`` parameter. In addition to YAML, the configuration file may be the computed output of a PHP file as a PHP array: .. code-block:: php array( "migrations" => "application/migrations" ), "environments" => array( "default_migration_table" => "phinxlog", "default_database" => "dev", "dev" => array( "adapter" => "mysql", "host" => $_ENV['DB_HOST'], "name" => $_ENV['DB_NAME'], "user" => $_ENV['DB_USER'], "pass" => $_ENV['DB_PASS'], "port" => $_ENV['DB_PORT'] ) ) ); Phinx auto-detects which language parser to use for files with ``*.yml`` and ``*.php`` extensions. The appropriate parser may also be specified via the ``--parser`` and ``-p`` parameters. Anything other than ``"php"`` is treated as YAML. In case with PHP array you can provide ``connection`` key with existing PDO instance to use omitting other parameters: .. code-block:: php array( "migrations" => "application/migrations" ), "environments" => array( "default_migration_table" => "phinxlog", "default_database" => "dev", "dev" => array( "connection" => $pdo_instance ) ) ); Running Phinx in a Web App -------------------------- Phinx can also be run inside of a web application by using the ``Phinx\Wrapper\TextWrapper`` class. An example of this is provided in ``app/web.php``, which can be run as a standalone server: .. code-block:: bash $ php -S localhost:8000 vendor/robmorgan/phinx/app/web.php This will create local web server at ``__ which will show current migration status by default. To run migrations up, use ``__ and to rollback use ``__. **The included web app is only an example and should not be used in production!** .. note:: To modify configuration variables at runtime and overrid ``%%PHINX_DBNAME%%`` or other another dynamic option, set ``$_SERVER['PHINX_DBNAME']`` before running commands. Available options are documented in the Configuration page.