30 Days to Learn Laravel
Laravel is an incredible and mature PHP framework that has sky-rocketed in popularity since its initial introduction back in 2012. I'm happy to say that I've been a user and advocate for the framework since the beginning. I'd love to show you the ropes if you're willing! Together, we'll review each piece of the framework, and wrap up by building a Job Board platform where users can post and apply to job listings. Ready to hit the road?
Updated Series Available
You are viewing an archived course. We instead recommend that you watch Laravel From Scratch (2026 Edition).
Progress
Series Info
- Episodes
- 30
- Run Time
- 8h 30m
- Difficulty
- Beginner
- Last Updated
- May 9, 2024
- Version
- Laravel 11
Series Episodes
- Baby Steps (7)
Hello, Laravel
Hi, my name is Jeffrey! I have been working with Laravel for over a decade, and would love to show you everything you need to know about building web apps with Laravel. The first step is to get your tooling in order. Let's go!Your First Route and View
Whenever I learn a new framework, I transform into a beginner who wants to build a laughably basic three-page layout. It's a great way to learn how a request flows through your codebase! In this episode, you'll learn about basic routing and views.Create a Layout File Using Laravel Components
We should create a layout file to reduce the amount of HTML duplication from the previous episode. This will provide the perfect opportunity to discuss Laravel components.Make a Pretty Layout Using TailwindCSS
Now that we understand the basics of how to link from page to page, let's take one episode to make a simple, but attractive HTML and CSS layout. Luckily, TailwindCSS and its components will make this work a cinch.Style the Currently Active Navigation Link
In this lesson, we'll learn how to apply special styling to the navigation link that matches the current page. Laravel provides aRequestobject that makes things like this a cinch.View Data and Route Wildcards
We can pass an array of data as the second argument of theview()function. Each key in this array will then be extracted into a variable within your view. Let's build a basic two-page Job listings section to illustrate this.Autoloading, Namespaces, and Models
We'll touch on a number of important topics in this episode, including PSR-4 autoloading, namespaces, and the MVC architecture.
- Eloquent (8)
Introduction to Migrations
It's time to move on to the subject of databases. In this lesson, we'll discuss Laravel migrations. You can think of migrations as PHP blueprints that determine your table structure.Meet Eloquent
This is a special episode. You're now ready to learn about Eloquent, Laravel's ORM. An ORM allows you to map an object within a database into a PHP object. Let's have a look!Model Factories
Model factories allow us to scaffold example data for the purposes of both testing and preparing a local environment. As with everything, Laravel makes this all a cinch. Let's have a look.Two Key Eloquent Relationship Types
For day 11, we'll focus exclusively on two Eloquent relationship types:belongsTo()andhasMany(). As you'll quickly find, these two will take you a very, very long way.Pivot Tables and BelongsToMany Relationships
The next key Eloquent relationship type to understand isbelongsToMany(). You will reach for this type whenever you're working with pivot tables. We'll use the example of jobs and tags to illustrate the basic concept.Eager Loading and the N+1 Problem
Lazy loading is useful, but, if you're not careful, it can lead to some nasty performance issues. In this episode, we'll discuss the N+1 problem and how to avoid it by leveraging eager loading.All You Need to Know About Pagination
Today, we move on to the topic of pagination. Up until this point, we've been fetching every record from the database. But that's hardly appropriate in most situations. Let's fix that!Understanding Database Seeders
What happens when we refresh our migrations, and then lose all of our records within the database? Do we have to manually run all of those factories again? Absolutely not. Instead, we can read for database seeders.
- Forms (4)
Forms and CSRF Explained (with Examples)
We finally get to discuss forms. However, in order to do so, we also must review a confusing topic: Cross-Site Request Forgery (CSRF).Always Validate. Never Trust the User.
So far, we've taken the happy path. But that just won't do in real life. No we must always assume that the user is malicious. For this reason, both client and server-side validation is a must.Editing, Updating, and Deleting a Resource
In this episode, you'll learn how to prepare the appropriate markup and routing to handle the process of editing, updating, and deleting a record.Routes Reloaded - 6 Essential Tips
Let's return to our routes file. In this episode, I have six essential routing tips that you should be aware of. You'll learn about implicit model binding, route resources, listing your routes, and more.
- Authentication (4)
Starter Kits, Breeze, and Middleware
We begin this new chapter with a review of Laravel Breeze, which provides initial project scaffolding for your new application. We also discuss middleware for the first time.Make a Login and Registration System From Scratch: Part 1
Now that you know how to use Laravel Breeze to jump-start a new app, let's take two episodes to review how you might build the beginnings of an authentication system from scratch.Make a Login and Registration System From Scratch: Part 2
Okay, let's finish up. In this episode, we'll write the necessary controller logic to handle registering a user, as well as authenticating them.6 Steps to Authorization Mastery
This is a special episode. We can now move on to the important subject of authorization. Laravel has a variety of APIs to assist in this area, so I've broken down everything you need to know into six steps.
- Digging Deeper (3)
How to Preview and Send Email Using Mailable Classes
Imagine that you want to send a confirmation email to a user upon publishing a new job. We can leverage Laravel's Mailable classes to allow for this. We'll review the initial configuration, previewing mail in the browser, and delivering test emails using Mailtrap.io.Queues Are Easier Than You Think
What's the solution to making a user wait and wait for an email to send behind the scenes? The answer is: use a queue. In this lesson, I'll demonstrate the entire process, while explaining the general concept in a way that anyone can understand.Get Your Build Process in Order
In this episode, we'll switch over to the frontend. I'll show you how to use Vite to compile your JavaScript and CSS assets like a pro.
- Final Project (4)
From Design to Blade
Okay, let's begin the final project! We'll begin and deploy a jobs platform from scratch. First up, we must convert the design to HTML and CSS. Let's go!Blade and Tailwind Techniques for Your Laravel Views
In this episode, we'll continue constructing the views for a fictional Pixel Positions app. I'll provide a variety of tips, techniques, and shortcuts for building flexible Blade views that you won't hate.Jobs, Tags, TDD, Oh My!
Let's get to work. We have our hands full for this episode. We'll build the general architecture for a job platform, including employers, tagging, and more. We'll also take a brief look at test-driven development.The Everything Episode
Buckle up, folks. This one is dense. To wrap up the series, we will complete our final project by working on registration, authentication, search, forms, and storage. Wew!
