Laravel Project Tutorial Step By Step

Sharing is Caring… Show some love 🙂

This is the most comprehensive tutorial to the Laravel Framework online.

Chapters

  1. Laravel Complete Overview
  2. Laravel: The Framework
  3. Building an App with Laravel
  4. Advance Laravel Guide → Deploying

Chapter 1: Laravel Complete Overview

In this laravel pelajaran, you will learn how to use the most popular PHP framework Laravel.

This tutorial will teach you Laravel from scratch to an advanced level, you will learn how to install Laravel, how to set up database connectivity, how to create a full-blown application, and deploy it to HEROKU.

Before we delve in, if you’re a backend developer or looking at delving into this career path, join other developers to receive daily articles on backend development that will boost your productivity.

What is Laravel?

Laravel Framework is an open-source PHP MVC framework for building simple to complex web applications. Laravel strictly follows the MVC (Model-View-Controller) architectural pattern. it is known for its beautiful and elegant syntax as a web framework.

Features of Laravel

Laravel has many great features of web development built in such as:

  1. One of the best routing system in PHP.
  2. It has the Service Container for easy dependency Injection.
  3. Built-in authentication mechanism with Logic, Registration, etc processes built-in.
  4. One of the best ORM called Eloquent for handling database connection, migration, and queries easily.
  5. Easy to use a templating engine called Blade and also integrations with popular Frontend frameworks like Vue, React out of the box.
  6. Building real-time applications with Laravel is made very easy with sungguhan-time event broadcasting.

Why you should learn Laravel?

There are many reasons why you should learn the Laravel framework, in this latihan, we will just only point out a few:

A portfolio builder for tech writers

Laravel follows strictly web/software development best practices and industry standards forcing you to master them while you work with the framework.

As mentioned above, PHP is used in up to
79.1%
across the internet making Laravel a top choice for developers.

With Laravel, you can build simple to complex projects faster using the Rapid Application Development practices and approach.

Laravel has one of the most beautiful and elegant syntax making the codebase easy to understand.

It also very easy to spin a microservice with Laravel Jago merah and maybe Vue ad the frontend framework.

Vuejs and Laravel are well integrated together making them a perfect couple for faster or rapid application development.

That’s obviously enough reason why you should learn Laravel, let’s try to compare Laravel with other PHP frameworks. You know you’re not making a mistake choosing to learn Laravel.

Laravel Framework vs Other Framework

Comparing Laravel with other PHP frameworks shows that Laravel is one of the top PHP frameworks with a total of 52.8% priority, Phalcon 16.7%, Symfony has 10.6%, etc. You can read more here.

What makes Laravel to have these high priorities, well, Laravel supports the following out of the box.

  1. Advanced Authentication and Authorisation techniques
  2. The Artisan CLI of Laravel is one of the magic and a great tool of the framework.
  3. Advanced and strictly support the MVC architectural pattern.
  4. The complexity of Database migration and management is made very simple with Eloquent ORM
  5. Following the OWASP security contoh out of the box.

Now you have a complete overview of Laravel Framework, Let’s dive right into the framework itself.

When it comes to learning Laravel, I will personally and highly recommend
these 3 courses. With it, I was able to learn and start building projects within a week.

Laravel 8 Beginner to Advance with Complete News Bab

PHP with Laravel for beginners – Become a Suhu in Laravel

Laravel 2022, the complete guide with betulan world projects

Chapter 2: Laravel: The Framework

In this chapter, the tutorial will explore a little about the Laravel framework.

We will discuss the structure of the framework and how the MVC pattern is used to structure the Laravel framework in this tutorial.

This latihan will discuss the 3 important elements/components of MVC and how Laravel utilizes them.

Finally, we will discuss the Models, Views, and Controllers.

If you’re excited as I am, let’s dive right in.

As you may have noticed already, Laravel strongly follows the MVC architectural pattern.

What is MVC?

MVC (Model-Views-Controller) is a design pattern in software development that divides the logic of the program into 3 interconnected elements.

These 3 elements are called, you guess Paradigma, Views, Controllers

The internal structuring of Laravel follows this design pattern.

Let’s explore how?

Polas:

This is the central component of the pattern, or in Laravel, the model class contains all the methods and attributes needed to interact with the database schema specified for it.

Grow your technical writing career in one place.

For example, assuming we have a User table in our database, in Laravel, the corresponding Model will be called
User
where you will be able to operate on the database table (users) as if the schema is just a plain PHP object.

Views:

Views represent how the Information is displayed, it is used for all the UI logic of the software. You are right if you say that the View represents the Frontend of your web page.

This is how users interact with your application, sends inputs to the Model, and receive output from the Model too.

In Laravel, the View part is very customizable and lots of the job has been down out of the box to give you a good look and feel when working with Laravel.

Laravel uses the Blade template to present the View of your application and you can easily customize Laravel to work with other Frontend libraries like Vue, React and even Angular.

Controllers:

Controllers act as a middle man between Models and Views, it processes all the inputs sent by the user from the View.
It processes all the business logic and incoming requests, manipulates data using the Teoretis component, and interacts with the Views to render the final output.

In Laravel, Controllers are like the chief executors because everything you do revolves around them, from handling incoming requests, handling validating to manipulating data in the database using the Model component to sending the output to the Views component to render the final output.

Now that we have a clear understanding of the structure of Laravel, I will add that every other thing you might notice in Laravel like Request, Response, Queues, Cache, etc revolves around these three components.

Let’s take a look at this diagram for a clearer picture:

Laravel Framework MVC

From the diagram above, you can spot that the controller does all the job and calls out to the individual components (Model) needed to achieve a particular task before sending the output to the View.

Read more on how Laravel implements MVC effectively.

Now that we understand the inner workings of the Laravel Framework, let’s start building our first project following the structure from this cak bimbingan:

When it comes to learning Laravel with courses, I will personally and highly recommend
these 3 courses. With it, I was able to learn and berangkat building projects within a week.

Laravel 8 Beginner to Advance with Complete News Gapura

PHP with Laravel for beginners – Become a Master in Laravel

Laravel 2022, the complete guide with sungguhan world projects

Want to get hired to write?

Take a break and subscribe to get access to our free Laravel tips that will improve your productivity.

Chapter 3: Building an App with Laravel

Now that we understand the nitty-gritty of Laravel theoretically, let’s dive into the practicals by creating a betulan project.

If you’re just starting out creating applications with your computer, you need to install any of these packages and set them up properly (Wamp, Lamp, Mamp).

You can read through how to install and set them up properly here.

In this pelajaran, we are going to demonstrate how to use Laravel to create a simple Todo application, with this we are going to explore how to set up Laravel, we will explore Laravel Requests and Responses, we will discuss the Controller component and how it interacts with Models and Views.

Setting up Laravel

A lot has changed in setting up Laravel since the release of the current version 8, you can get full details on how to install and set up Laravel here.

We are going to use the conventional way assuming you have composer installed already. We will create a todo-app with our Laravel installation, just run the following command:

        composer create-project laravel/laravel todo-app
      

Next, change your directory to the current created directory:

        cd todo-app
      

Open your project with any code editor of your choice, I will be using Visual Studio Code.

Lastly, run the following command to serve your webpage.

        php artisan serve
      

Visit
http://127.0.0.1:8000
in your browser to test your newly created Laravel project.

Cheers 🙂

Setting up Database

After installing Laravel, you almost do not need any additional set up except if you want to change timezones or other specific configurations, then you can review the
config/app
file to see the different configurations available.

But if you’re good with the defaults, let’s look at how to configure our database:

First, create a new database using any Database Client of your choice and note the login credentials.

Next, open the
.env
file (or create a new one if not exists), update the following information.

        DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=DB NAME HERE DB_USERNAME=DB USERNAME HERE DB_PASSWORD=DB PASSWORD HERE
      

In our case, we will stick with
mysql
database.

Setting up the Schema

The next step is to set up your database migrations and configure your database Eloquent Relationships.

Run the following command in the same terminal, to create a database schema file for our Todo table.

        php artisan make:migration create_todos_table --create=todos
      

That command will create a new migration file inside
database/migrations/xxx_create_todos_table.php, open it and paste in the following codes.

        
          <?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateTodosTable extends Migration {     /**      * Run the migrations.      *      * @return void      */     public function up()     {         Schema::create('todos', function (Blueprint $table) {             $table->id();             $table->string('title');             $table->text('desc')->nullable();             $table->integer('pamor')->default(0);             $table->integer('user_id');             $table->timestamps();         });     }     /**      * Reverse the migrations.      *      * @return void      */     public function down()     {         Schema::dropIfExists('todos');     } }
      

Lastly, before you migrate the database, note that you can set up Database Seeders to generate fake data for your database, or clone my
repository
since I have configured database seeders already.

Now, run the migration:

        php artisan migrate
      

Set up User Authentication with Laravel Breeze

Initially, setting up authentication without the use of packages can be tedious because you will have to code everything from Registration, Login to Forgot Password logic.

But with the use of Laravel Breeze, the authentication process is made very easy and less time-consuming.

Let’s install and set up our authentication process with minutes:

        composer require laravel/breeze --dev  php artisan breeze:install  npm install  npm run dev
      

With these few commands, your authentication process is set, navigate to
http://127.0.0.1:8000/register
or
http://127.0.0.1:8000/login, if you see the following screenshots then everything is properly set up.

Laravel Framework register

All Laravel Breeze configuration can be found at
config/auth.php, then all the Authentication logic is found in
app/Http/Controllers/Auth, and all the UI interface files can be found at
resources/views/auth.

You can tiba studying the authentication process from there.

Creating Models

If you look at the App folder, you might see a Models folder if Laravel 8 and a
User.php
file inside it or you might see
User.php
file inside the
App
folder.

That is exactly what a Model is:

Just a file that contains methods and properties to interact with our Database Schema, inside the
User.php, you will notice that it extends (inherit) the Model parent class that is where all the methods and properties to interact with our Database Schema is coming from.

We can use the pre-defined User model to retrieve or create a new user in our application by providing the data needed in the User schema at
database/migrations/xxxx_create_users_xxxx.php
file.

Let’s take a look:

To retrieve all the users in our database, we will simply do:

        $users = User::all();  foreach($users as $user){   echo $user->name }
      

To retrieve a particular user based on ID:

        $user = User::find(1) // ID of 1  echo $user->name;
      

Create a new User (No need for SQL insert statement)

        $user = new User; $user->name = "Solomon Eseme"; $user->email = "[email protected]"; $user->password = "strongpassword"; $user->save();
      

By calling the
save()
method of the model instance, Laravel will either create a new User or update the existing User.

To delete a User from your Database, simply run:

        $deletedUser = User::find(1)->delete();
      

Deleting a User is simply done by calling the
delete
method of the Lengkap.

To retrieve Users with certain conditions, you can user the where method the Laravel Models

        $users = User::where('email', '!=', '')->get();  foreach($users as $user){   echo $user->name }
      

Again, that will retrieve all the users that have email addresses added.

Now that we have a glimpse of what Laravel Models are, let’s create our own Todo Model to interact with the Todo schema we create above.

Open your project perhentian and run the following command.

        php artisan make:arketipe Todo
      

The command will generate a new Todo Teoretis inside
app
folder or
app/Models
folder (Laravel 8).

Open the file and go through it to see if the content is familiar from the User’s model we explored earlier.

You don’t need to do anything, for now, let’s move on to creating controllers.

Creating Controllers

Again, controllers are like the middleman between requests (views) and models.

When a user sends a request to your backend either by clicking a button or submitting a form, the request passes through the routes to the controller and the controller calls out to your teoretis to serve the request and returns a response back to the user (View).

With this flow in mind, let’s create our first controller to handle any request for the Todos:

Run the following command in your project halte to create a new controller.

        php artisan make:controller TodosController
      

There are naming conventions in the official documentation, but any name will do.

The command above will create a controller file inside
app/Https/Controllers, open the
TodosController
file and look at the generated content.

CRUD Controller

Next, we are going to create a CRUD operation to interact with our Model and serve the users of our application (Views).

Add the following codes to the newly created controller:

        <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TodosController extends Controller {     //     public function index(Request $request)     {         # code...     }     public function show(Request $request, $id)     {         # code...     }     public function edit(Request $request)     {         # code...     }     public function update(Request $request)     {         # code...     }     public function create(Request $request)     {         # code...     }     public function store(Request $request)     {         # code...     }     public function delete(Request $request)     {         # code...     } }
      

This is just a skeleton of how the controller will look like. Now, let’s fill in the content of each method.

A complete code for our controller will look like this:

        <?php  namespace App\Http\Controllers;  use App\Models\Todo; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Auth;  class TodosController extends Controller {     //      public function index(Request $request)     {         # code...          $todos = Todo::all();         return view('dashboard')->with(['todos' => $todos]);     }      public function byUserId(Request $request)     {         # code...          $todos = Todo::where('user_id', Auth::user()->id)->get();         return view('dashboard')->with(['todos' => $todos]);     }      public function show(Request $request, $id)     {         # code...         $todo = Todo::find($id);         return view('show')->with(['todo' => $todo]);     }      public function edit(Request $request, $id)     {         # code...         $todo = Todo::find($id);         return view('edit', ['todo' => $todo]);     }      public function update(Request $request, $id)     {         # Validations before updating         $todo = Todo::where('user_id', Auth::user()->id)->where('id', $id)->first();          if ($todo) {             $todo->title = $request->title;             $todo->desc = $request->desc;             $todo->martabat = $request->status == 'on' ? 1 : 0;             if ($todo->save()) {                 return view('show', ['todo' => $todo]);             }             return; // 422         }          return; // 401     }      public function create(Request $request)     {         # code...         return view('add');     }      public function store(Request $request)     {         # Validations before updating         $todo = new Todo;         $todo->title = $request->title;         $todo->desc = $request->desc;         $todo->user_id = Auth::user()->id;         if ($todo->save()) {             return view('show', ['todo' => $todo]);         }          return; // 422     }      public function delete(Request $request, $id)     {         # code...         $todo = Todo::where('user_id', Auth::user()->id)->where('id', $id)->first();         if ($todo) {             $todo->delete();             return view('index');         }         return; // 404     } }
        
      

As this is a beginner’s guide, there are lots we did titinada bother checking, like validations, clean code, errors, and others.

From the code above, you can see how we interact with our Todo teladan and serve the User’s request by calling the
view
method and passing on the HTML page we want the user to see.

For example, if a user clicks on our edit button, the request is sent to the
edit
method of the
TodosController, then, the controller will find the particular Todo by ID (using the Todo kamil methods) and return back an Edit Form (HTML) filled with that particular Todo data to the user.

The
Request
object contains lots of Information about the current request the user is sending to our application but for now, we only used it to retrieve the data we need to create or update our Todo arketipe.

To learn more about Requests, check here.

Creating Routes

Next, we are going to look at creating routes that map user’s requests to individual methods in any controller based on the user’s request.

When a user clicks on a button or submits a form, how does Laravel know which method to call or which controller to send the request to?

Well, everything is defined and mapped using a Routing System.

Laravel has an elegant routing system build in already:

Now, open the
web.php
file inside the
routes
folder and add the following codes:

        Route::get('/login', function () {     return view('welcome'); });  Route::get('/todos/mine', [TodosController::class, 'byUserId'])->middleware(['auth'])->name('mine'); Route::get('/todos/{id}/edit', [TodosController::class, 'edit'])->middleware(['auth'])->name('edit-form'); Route::get('/todos/create', [TodosController::class, 'create'])->middleware(['auth'])->name('create-form'); Route::post('/todos/{id}/update', [TodosController::class, 'update'])->middleware(['auth'])->name('update'); Route::post('/todos/add', [TodosController::class, 'store'])->middleware(['auth'])->name('add'); Route::get('/todos/{id}', [TodosController::class, 'show'])->middleware(['auth'])->name('show'); Route::delete('/todos/:id', [TodosController::class, 'delete'])->middleware(['auth'])->name('delete');  Route::get('/dashboard', [TodosController::class, 'index'])->middleware(['auth'])->name('dashboard');  require __DIR__ . '/auth.php';
      

You can see that each method in our
TodosController
is mapped onto a specific URL (route) in the webpage.

You can get more information about Laravel Routing System.

Creating Views

Dashboard view

The Dashboard view is the dashboard when a user successfully registers and login, it will present a list of all the Todos in our application and can also be sorted by unik todos.

Create a new blade file inside
resources/views/dashboard.blade.php
and paste in the following codes.

        <x-app-layout>     <x-slot name="header">         <h2 class="font-semibold text-xl text-gray-800 leading-tight">             {{ __('Dashboard') }}         </h2>     </x-slot>      <div class="py-12">         <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">             <div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">                 <div class="p-6 bg-white border-b border-gray-200">                     <x-button-link href="{{ route('create-form') }}">Add new todo</x-button-link>                 </div>             </div>         </div>     </div>       <div class="py-12">         <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">             <div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">                 <div class="p-6 bg-white border-b border-gray-200">                     <div class="panel-bod">                         <table class="table">                              <!-- Table Headings -->                             <thead>                                 <th>All Todos</th>                                 <th>&nbsp;</th>                                 <th>                                     <x-button-link href="{{ route('mine') }}">Show mine</x-button-link>                                 </th>                             </thead>                              <!-- Table Body -->                             <tbody class="max-w-full">                                 @foreach($todos as $todo)                                 <tr class="max-w-full">                                     <!-- Task Name -->                                     <td class="pt-5 pb-5 pr-5">                                         <!-- <div class=""> -->                                         <h1 class="sm:font-bold">{{ $todo->title }}</h1>                                         <p>{{ $todo->desc }}</p>                                         <p class="pt-2 text-gray-500"> Added By: {{ $todo->user->id == auth()->user()->id? 'You':$todo->user->name }}</p>                                         <!-- </div> -->                                      </td>                                      <td>                                         <!-- TODO: Delete Button -->                                         <div>                                             <x-button-link href="/todos/{{$todo->id}}" class="bg-green-500">View</x-button-link>                                             @if($todo->user_id == auth()->user()->id)                                             <x-button-link href="{{ route('edit-form', ['id'=>$todo->id]) }}" class="bg-yellow-500">Edit</x-button-link>                                             <x-button-link href="/todos/{{$todo->id}}/delete" class="bg-red-500">Delete</x-button-link>                                             @endif                                         </div>                                     </td>                                 </tr>                                 @endforeach                             </tbody>                         </table>                     </div>                 </div>             </div>         </div>     </div> </x-app-layout>
      

Show view

The Show View displays only the information of a particular Todo when a user clicks to see more details.

Create a new blade file inside
resources/views/show.blade.php
and paste in the following codes.

        <x-app-layout>     <x-slot name="header">         <h2 class="font-semibold text-xl text-gray-800 leading-tight">             {{ __('Dashboard') }}         </h2>     </x-slot>      <div class="py-12">         <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">             <div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">                 <div class="p-6 bg-white border-b border-gray-200">                     You're logged in!                 </div>             </div>         </div>     </div>      <div class="py-12">         <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">             <div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">                 <div class="p-6 bg-white border-b border-gray-200">                     <div class="panel-bod">                         <table class="table">                              <!-- Table Headings -->                             <thead>                                 <th>Todo</th>                                 <th>&nbsp;</th>                             </thead>                              <!-- Table Body -->                             <tbody class="max-w-full">                                 <tr class="max-w-full">                                     <!-- Task Name -->                                     <td class="pt-5 pb-5 pr-5">                                         <!-- <div class=""> -->                                         <h1 class="sm:font-bold">{{ $todo->title }}</h1>                                         <p>{{ $todo->desc }}</p>                                         <div class="flex content-between">                                             <p class="pt-2 text-gray-500 pr-5"> Added By: {{ $todo->user->name }}</p>                                             <p class="pt-2 text-gray-500"> Status: {{ $todo->status == 1? "Done": "Pending"}}</p>                                         </div>                                      </td>                                      <td>                                         <!-- TODO: Delete Button -->                                         <div>                                             <x-button-link href="/todos/{{$todo->id}}" class="bg-green-500">View</x-button-link>                                             @if($todo->user_id == auth()->user()->id)                                             <x-button-link href="{{ route('edit-form', ['id'=>$todo->id]) }}" class="bg-yellow-500">Edit</x-button-link>                                             <x-button-link href="/todos/{{$todo->id}}/delete" class="bg-red-500">Delete</x-button-link>                                             @endif                                         </div>                                     </td>                                 </tr>                             </tbody>                         </table>                     </div>                 </div>             </div>         </div>     </div> </x-app-layout>
      

Edit
view

The Edit View contains a form to update a particular Todo when the owner of the Todo clicks on the edit button.

Create a new blade file inside
resources/views/edit.blade.php
and paste in the following codes.

        <x-app-layout>     <x-slot name="header">         <h2 class="font-semibold text-xl text-gray-800 leading-tight">             {{ __('Dashboard') }}         </h2>     </x-slot>      <div class="py-12">         <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">             <div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">                 <div class="p-6 bg-white border-b border-gray-200">                     <form class="max-w-full" method="post" action="{{route('update', ['id'=>$todo->id])}}">                         @csrf                         <x-merek class="pt-5 pb-5 pr-5">                             Title                             <x-input name="title" placeholder="Enter title" class="p-3 border-gray-900" value="{{$todo->title}}"></x-input>                         </x-label>                         <x-segel class="pt-5 pb-5 pr-5">                             Description                             <textarea name="desc">{{ $todo->desc }}</textarea>                         </x-label>                         <x-tanda class="pt-5 pb-5 pr-5">                             Pamor                             <input name="harga diri" type="checkbox" {{$todo->pamor==1 ? 'checked': ''}}>Done                             </ input>                         </x-segel>                         <x-button>Submit</x-button>                     </form>                 </div>             </div>         </div>     </div> </x-app-layout>
      

Add view

The Add View contains a form to add/create a new particular Todo when a user clicks on the add button.

Create a new blade file inside
resources/views/add.blade.php
and paste in the following codes.

        <x-app-layout>     <x-slot name="header">         <h2 class="font-semibold text-xl text-gray-800 leading-tight">             {{ __('Dashboard') }}         </h2>     </x-slot>      <div class="py-12">         <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">             <div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">                 <div class="p-6 bg-white border-b border-gray-200">                     <form class="max-w-full" method="post" action="{{ route('add') }}">                         @csrf                         <x-label class="pt-5 pb-5 pr-5">                             Title                             <x-input required name="title" placeholder="Enter title" class="p-3 border-gray-900"></x-input>                         </x-label>                         <x-label class="pt-5 pb-5 pr-5">                             Description                             <textarea required name="desc"></textarea>                         </x-label>                         <x-button>Submit</x-button>                     </form>                 </div>             </div>         </div>     </div> </x-app-layout>
      

Preview.

If you get everything correctly, you should be presented with a dashboard like this:


Congratulations on making it this far!

When it comes to learning Laravel, I will personally and highly recommend
these 3 courses. With it, I was able to learn and start building projects within a week.

Laravel 8 Beginner to Advance with Complete News Portal

PHP with Laravel for beginners – Become a Master in Laravel

Laravel 2022, the complete guide with real world projects

Take a break and subscribe to get access to our free Laravel tips that will improve your productivity.

Chapter 4: Deploying Laravel Project

Now, deploying your Laravel project can be tedious especially if it is your first time, but in this chapter, we will look at deploying your first Laravel project easily and successfully.

Deploying Laravel to Heroku

To deploy Laravel to Heroku is a rather fun and straightforward process, it comes with great benefits and supports auto-deployment and auto ujian that’s why I have prepared a work through an article on deploying Laravel to Heroku.

Deploying Laravel to Shared Hosting

Deploying Laravel to shared hosting might be the cheapest option available right now for eksamen purposes, that’s why I have prepared a work through article on deploying Laravel to Shared Hosting.

More Resources

  1. Official Laravel Docs
  2. Laravel News
  3. LaraShout
  4. Let’s Build with Laravel: A Linktree Clone
  5. Laravel PHP Framework Kursus
  6. LaraCasts

Conclusion

In this tutorial, we have looked at the nitty-gritty of Laravel and have created a Todo application to practically demonstrate the knowledge we have gained so far.

We have even looked at how to deploy the application to different hosting platforms.

Now, it’s your turn to practice everything you have learned until you hawa them by building real world projects. Let me know what you will be building, if none, just comment “Laravel is Great”, we may connect from there.

When it comes to learning Laravel with courses, I will personally and highly recommend these 3 courses. With it, I was able to learn and menginjak building projects within a week.

Laravel 8 Beginner to Advance with Complete News Portal

PHP with Laravel for beginners – Become a Temperatur in Laravel

Laravel 2022, the complete guide with sungguhan world projects

Ready to ditch Google Drive? Try Contentre.

Source: https://masteringbackend.com/posts/laravel-framework-the-ultimate-guide/