Soon, Laravel 9 wil release and there are some new features that we can use them.
This series is going to be a sequel about Laravel framework version 9 and in each article we will review a new feature!
1. Laravel 9: Stub Migration
Since Laravel 8.37, there is no need to create a migration with a specific class name. If we have so many migrations and probably forgot about their class name or we are afraid to have collisions in new migration, this feature coming handy and nice.
According to the pull request on github this feature is backward compatible.
So how do we can create it?
Just run this command: php artisan make:migration
and it will give you this:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('nick_name')->nullable();
});
}
};
It's an anonymous migration which will do any things to any model you decide, just you have no worries about class names anymore.
That's it... Any question?
Top comments (2)
but how can I call the up method of a specific migration?
before:
after:
@lordisp Firstly, your "before" wouldn't work, because migration classes couldn't be autoloaded. You would need to require/include the file manually, and it could be done only once, otherwise PHP would panic while trying to define the class for the second time. You would also pollute your global namespace.
Secondly, did you ever need to do that? I doubt...
You can do what you described with the following snippet: