Laravel is a popular open-source PHP web application framework used for developing robust and scalable web applications. With the release of Laravel 10, many developers are now looking to upgrade their Laravel 9 projects to the latest version.
This article will guide you through the process of upgrading your Laravel 9 project to Laravel 10.
Before you start your upgrade
Before starting the process, it is essential to ensure that your current Laravel 9 project is up to date. You should have the latest version of Laravel 9 installed, and all dependencies should be up to date. You can check the current version of Laravel installed in your project by running the following command:
php artisan --version
Once you have confirmed that your Laravel 9 project is up to date, you can proceed with the upgrade process.
Upgrade Laravel Dependencies
The first step is to update the dependencies of your Laravel project to their latest version.
You can do this by updating the composer.json file of your project. Open the file and update the version of Laravel to ^10.0 along with other dependencies:
laravel/framework to ^10.0
laravel/sanctum to ^3.2
doctrine/dbal to ^3.0
spatie/laravel-ignition to ^2.0
Then run the following command:
composer update
This command will update all the dependencies of your project, including Laravel, to their latest version.
Update Configuration Files
The next step is to update the configuration files of your Laravel project. Laravel 10 introduced some changes to the configuration files, and you need to update them accordingly. Here are the changes you need to make:
1. In the config/app.php file, change the value of the "timezone" key to your timezone.
2. In the config/auth.php file, change the value of the "guards" key to the following:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
3. In the config/session.php file, change the value of the "same_site" key to "lax".
4. In the app/Http/Kernel.php file, remove line containing
\Fruitcake\Cors\HandleCors::class,
Update Blade Syntax
Laravel 10 introduced some changes to the Blade syntax. You need to update your Blade templates accordingly. Here are the changes you need to make:
1. The "@method" directive is no longer supported in Blade templates. You should use the "@csrf" directive instead.
2. The "@error" directive has been replaced with the "@if($errors->any())" directive.
Update Route Definitions
Laravel 10 introduced some changes to route definitions. You need to update your route definitions accordingly. Here are the changes you need to make:
1. The "Route::fallback" method has been replaced with the "Route::any('{any}', …" method.
2. The "Route::get" method now accepts a second parameter, which is an array of middleware.
3. The "Route::middleware" method has been deprecated. You should use the "Route::aliasMiddleware" method instead.
Update Models
Laravel 10 introduced some changes to models. You need to update your models accordingly. Here are the changes you need to make:
1. The "HasFactory" trait has been replaced with the "HasFactoryTrait" trait.
2. The "scope" method has been replaced with the "apply" method.
Update Controllers
Laravel 10 introduced some changes to controllers. You need to update your controllers accordingly. Here are the changes you need to make:
1. The "validation" method has been replaced with the "validate" method.
2. The "authorize" method has been replaced with the "authorizeForUser" method.
Update Migrations
Laravel 10 introduced some changes to migrations. You need to update your migrations accordingly. Here are the changes you need to make:
1. The "bigInteger" method has been replaced with the "bigIntegerUnsigned" method.
2. The "unsignedBigInteger" method has been deprecated. You should use the "bigIntegerUnsigned" method instead.
Update Tests
Laravel 10 introduced some changes to tests. You need to update your tests accordingly. Here are the changes you need to make:
1. The "TestCase" class has been replaced with the "Tests\TestCase" class.
2. The "DatabaseTransactions" trait has been replaced with the "RefreshDatabase" trait.
Run Migration and Test
Once you have updated your Laravel 9 project to Laravel 10, you need to run the migration to update your database schema. To do this, run the following command:
php artisan migrate
You should also run your tests to ensure that everything is working as expected. To do this, run the following command:
php artisan test
Conclusion
Upgrading your Laravel 9 project to Laravel 10 is a straightforward process. You need to update your dependencies, configuration files, Blade syntax, route definitions, models, controllers, migrations, and tests. Once you have made all the necessary changes, you can run the migration and test to ensure that everything is working as expected.
With the latest version of Laravel, you can take advantage of new features and enhancements that will improve the performance and scalability of your web application.