CodeIgniter Forums
Where are the migration commands? - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: CodeIgniter 4 (https://forum.codeigniter.com/forumdisplay.php?fid=28)
+--- Forum: CodeIgniter 4 Support (https://forum.codeigniter.com/forumdisplay.php?fid=30)
+--- Thread: Where are the migration commands? (/showthread.php?tid=75633)



Where are the migration commands? - falko - 02-27-2020

I'm using CodeIgniter 4.0.2 and the migration commands are gone. How can I get them back?


RE: Where are the migration commands? - InsiteFX - 02-27-2020

There not gone they use the same commands as Database Forge.

Look at the Database Forge commands.

Here is the Migration from Myth/Auth:

PHP Code:
<?php namespace Myth\Auth\Database\Migrations;

use 
CodeIgniter\Database\Migration;

class 
CreateAuthTables extends Migration
{
    public function up()
    {
        /*
         * Users
         */
        $this->forge->addField([
            'id'               => ['type' => 'int''constraint' => 11'unsigned' => true'auto_increment' => true],
            'email'            => ['type' => 'varchar''constraint' => 255],
            'username'         => ['type' => 'varchar''constraint' => 30'null' => true],
            'password_hash'    => ['type' => 'varchar''constraint' => 255],
            'reset_hash'       => ['type' => 'varchar''constraint' => 255'null' => true],
            'reset_at'         => ['type' => 'datetime''null' => true],
            'reset_expires'    => ['type' => 'datetime''null' => true],
            'activate_hash'    => ['type' => 'varchar''constraint' => 255'null' => true],
            'status'           => ['type' => 'varchar''constraint' => 255'null' => true],
            'status_message'   => ['type' => 'varchar''constraint' => 255'null' => true],
            'active'           => ['type' => 'tinyint''constraint' => 1'null' => 0'default' => 0],
            'force_pass_reset' => ['type' => 'tinyint''constraint' => 1'null' => 0'default' => 0],
            'created_at'       => ['type' => 'datetime''null' => true],
            'updated_at'       => ['type' => 'datetime''null' => true],
            'deleted_at'       => ['type' => 'datetime''null' => true],
        ]);

        $this->forge->addKey('id'true);
        $this->forge->addUniqueKey('email');
        $this->forge->addUniqueKey('username');

        $this->forge->createTable('users'true);

        /*
         * Auth Login Attempts
         */
        $this->forge->addField([
            'id'         => ['type' => 'int''constraint' => 11'unsigned' => true'auto_increment' => true],
            'ip_address' => ['type' => 'varchar''constraint' => 255'null' => true],
            'email'      => ['type' => 'varchar''constraint' => 255'null' => true],
            'user_id'    => ['type' => 'int''constraint' => 11'unsigned' => true'null' => true], // Only for successful logins
            'date'       => ['type' => 'datetime'],
            'success'    => ['type' => 'tinyint''constraint' => 1],
        ]);
        $this->forge->addKey('id'true);
        $this->forge->addKey('email');
        $this->forge->addKey('user_id');
        // NOTE: Do NOT delete the user_id or email when the user is deleted for security audits
        $this->forge->createTable('auth_logins'true);

        /*
         * Auth Tokens
         * @see https://paragonie.com/blog/2015/04/secure-authentication-php-with-long-term-persistence
         */
        $this->forge->addField([
            'id'              => ['type' => 'int''constraint' => 11'unsigned' => true'auto_increment' => true],
            'selector'        => ['type' => 'varchar''constraint' => 255],
            'hashedValidator' => ['type' => 'varchar''constraint' => 255],
            'user_id'         => ['type' => 'int''constraint' => 11'unsigned' => true],
            'expires'         => ['type' => 'datetime'],
        ]);
        $this->forge->addKey('id'true);
        $this->forge->addKey('selector');
        $this->forge->addForeignKey('user_id''users''id'false'CASCADE');
        $this->forge->createTable('auth_tokens'true);

        /*
         * Password Reset Table
         */
        $this->forge->addField([
            'id'         => ['type' => 'int''constraint' => 11'unsigned' => true'auto_increment' => true],
            'email'      => ['type' => 'varchar''constraint' => 255],
            'ip_address' => ['type' => 'varchar''constraint' => 255],
            'user_agent' => ['type' => 'varchar''constraint' => 255],
            'token'      => ['type' => 'varchar''constraint' => 255'null' => true],
            'created_at' => ['type' => 'datetime''null' => false],
        ]);
        $this->forge->addKey('id'true);
        $this->forge->createTable('auth_reset_attempts');

        /*
         * Activation Attempts Table
         */
        $this->forge->addField([
            'id'         => ['type' => 'int''constraint' => 11'unsigned' => true'auto_increment' => true],
            'ip_address' => ['type' => 'varchar''constraint' => 255],
            'user_agent' => ['type' => 'varchar''constraint' => 255],
            'token'      => ['type' => 'varchar''constraint' => 255'null' => true],
            'created_at' => ['type' => 'datetime''null' => false],
        ]);
        $this->forge->addKey('id'true);
        $this->forge->createTable('auth_activation_attempts');

        /*
         * Groups Table
         */
        $fields = [
            'id'          => ['type' => 'int''constraint' => 11'unsigned' => true'auto_increment' => true],
            'name'        => ['type' => 'varchar''constraint' => 255],
            'description' => ['type' => 'varchar''constraint' => 255],
        ];

        $this->forge->addField($fields);
        $this->forge->addKey('id'true);
        $this->forge->createTable('auth_groups'true);

        /*
         * Permissions Table
         */
        $fields = [
            'id'          => ['type' => 'int''constraint' => 11'unsigned' => true'auto_increment' => true],
            'name'        => ['type' => 'varchar''constraint' => 255],
            'description' => ['type' => 'varchar''constraint' => 255],
        ];

        $this->forge->addField($fields);
        $this->forge->addKey('id'true);
        $this->forge->createTable('auth_permissions'true);

        /*
         * Groups/Permissions Table
         */
        $fields = [
            'group_id'      => ['type' => 'int''constraint' => 11'unsigned' => true'default' => 0],
            'permission_id' => ['type' => 'int''constraint' => 11'unsigned' => true'default' => 0],
        ];

        $this->forge->addField($fields);
        $this->forge->addKey(['group_id''permission_id']);
        $this->forge->addForeignKey('group_id''auth_groups''id'false'CASCADE');
        $this->forge->addForeignKey('permission_id''auth_permissions''id'false'CASCADE');
        $this->forge->createTable('auth_groups_permissions'true);

        /*
         * Users/Groups Table
         */
        $fields = [
            'group_id' => ['type' => 'int''constraint' => 11'unsigned' => true'default' => 0],
            'user_id'  => ['type' => 'int''constraint' => 11'unsigned' => true'default' => 0],
        ];

        $this->forge->addField($fields);
        $this->forge->addKey(['group_id''user_id']);
        $this->forge->addForeignKey('group_id''auth_groups''id'false'CASCADE');
        $this->forge->addForeignKey('user_id''users''id'false'CASCADE');
        $this->forge->createTable('auth_groups_users'true);

        /*
         * Users/Permissions Table
         */
        $fields = [
            'user_id'       => ['type' => 'int''constraint' => 11'unsigned' => true'default' => 0],
            'permission_id' => ['type' => 'int''constraint' => 11'unsigned' => true'default' => 0],
        ];

        $this->forge->addField($fields);
        $this->forge->addKey(['user_id''permission_id']);
        $this->forge->addForeignKey('user_id''users''id'false'CASCADE');
        $this->forge->addForeignKey('permission_id''auth_permissions''id'false'CASCADE');
        $this->forge->createTable('auth_users_permissions');
    }

    //--------------------------------------------------------------------

    public function down()
    {
        
// drop constraints first to prevent errors
        if ($this->db->DBDriver != 'SQLite3')
        {
            $this->forge->dropForeignKey('auth_tokens''auth_tokens_user_id_foreign');
            $this->forge->dropForeignKey('auth_groups_permissions''auth_groups_permissions_group_id_foreign');
            $this->forge->dropForeignKey('auth_groups_permissions''auth_groups_permissions_permission_id_foreign');
            $this->forge->dropForeignKey('auth_groups_users''auth_groups_users_group_id_foreign');
            $this->forge->dropForeignKey('auth_groups_users''auth_groups_users_user_id_foreign');
            $this->forge->dropForeignKey('auth_users_permissions''auth_users_permissions_user_id_foreign');
            $this->forge->dropForeignKey('auth_users_permissions''auth_users_permissions_permission_id_foreign');
        }

        
$this->forge->dropTable('users'true);
        
$this->forge->dropTable('auth_logins'true);
        
$this->forge->dropTable('auth_tokens'true);
        
$this->forge->dropTable('auth_reset_attempts'true);
        $this->forge->dropTable('auth_activation_attempts'true);
        
$this->forge->dropTable('auth_groups'true);
        
$this->forge->dropTable('auth_permissions'true);
        
$this->forge->dropTable('auth_groups_permissions'true);
        
$this->forge->dropTable('auth_groups_users'true);
        
$this->forge->dropTable('auth_users_permissions'true);
    }


That should point you in the right direction.


RE: Where are the migration commands? - falko - 02-27-2020

I tried to run "php spark" and no migration commands appear.


RE: Where are the migration commands? - marqone - 02-27-2020

I am having the same problem. No spark commands seem to run at all. This is what I just trying to run spark (which used to show a helpful list of commands).


Code:
CodeIgniter CLI Tool - Version 4.0.2 - Server-Time: 2020-02-27 23:04:31pm

Command "help" not found.



RE: Where are the migration commands? - dave friend - 02-27-2020

Try

> php spark list


RE: Where are the migration commands? - marqone - 02-27-2020

I did some more digging around. I installed the appstarter project in a clean directory and tried the spark command just to make sure it was not an issue with my install that I have been using since before the RC's. I ended up getting the Kint error... which is weird because the fix for that appeared to be copying the Kint.php file from the system/config directory into the app/config directory, but when I checked out app/config the file was there

Code:
$ ./spark
An uncaught Exception was encountered

Type:        Error
Message:    Class 'Kint\Kint' not found
Filename:    /home/greg/test/vendor/codeigniter4/framework/system/ThirdParty/Kint/init.php
Line Number: 46


So with that not working I tried out the regular codeigniter4/framework package. This had a better result, but still think something is slightly off as I recall when you ran the spark command previously it would run the list command when no parameters were passed; this did not, but the list command does work. 

Code:
$ ./spark


CodeIgniter CLI Tool - Version 4.0.2 - Server-Time: 2020-02-27 23:54:58pm

Description:
  Displays basic usage information.

Usage:
  help command_name

Arguments:
  command_name      The command name [default: "help"]

(02-27-2020, 10:50 PM)dave friend Wrote: Try

> php spark list

Tried that too. 
Code:
$ php spark list


CodeIgniter CLI Tool - Version 4.0.2 - Server-Time: 2020-02-28 00:08:01am

Command "list" not found.

More updates -- because I have to test migrations for a project... sorry if this is too many messages.

So I rolled back to RC4 and found out that spark did not work there either, so I rolled back to RC3 and spark started to work again...


RE: Where are the migration commands? - InsiteFX - 02-28-2020

Make sure that you are running it in the root along with index.php public folder.


RE: Where are the migration commands? - InsiteFX - 02-28-2020

I know that php spark is working because I just migrated the Myth/Auth tables.


RE: Where are the migration commands? - rahulswt7 - 02-28-2020

(02-27-2020, 03:59 PM)falko Wrote: I tried to run "php spark" and no migration commands appear.
Do 
Code:
php spark list



RE: Where are the migration commands? - marqone - 02-28-2020

(02-28-2020, 07:34 AM)rahulswt7 Wrote:
(02-27-2020, 03:59 PM)falko Wrote: I tried to run "php spark" and no migration commands appear.
Do 
Code:
php spark list

Yes - tried that too. 
Code:
$ php spark list


CodeIgniter CLI Tool - Version 4.0.2 - Server-Time: 2020-02-28 00:08:01am

Command "list" not found.

(02-28-2020, 06:04 AM)InsiteFX Wrote: I know that php spark is working because I just migrated the Myth/Auth tables.

Can you let us know your environment and how you installed CI? This might have something to do with installing via composer.