# Laravel Learning Path (Beginner Level)
This repository contains the **ordered** list of Laravel topics to learn, step-by-step, with related links.
Embark on a structured learning path to master Laravel, featuring an **organized** lineup of topics complete with accompanying resources.
Feel free to contribute by adding topics, resources, or any other.
---
**Icon Key**:
- :book: Official Docs
- :clapper: Video
- :page_facing_up: Article
- :capital_abcd: Course
- :question: Test
## Week 1: Begin Your Laravel Journey
Focus: Create your first Laravel project and explore the basics.
| Topic | Learning Links |
| ----- | -------------- |
| **Introduction to Routing and Controllers** | :question: [Test Your Laravel Routing Skills with 12 Tasks](https://www.youtube.com/watch?v=pENlD3izA3Q) |
| Explore Callback Functions and Route::view() |:book: [Basic Routing](https://laravel.com/docs/routing#basic-routing) <br>:book: [View Routes](https://laravel.com/docs/routing#view-routes) |
## Week 2: Dive Deeper into Laravel Features
Focus: Deepen your understanding of Laravel's Blade templating engine and basics of user authentication.
| Topic | Learning Links |
| ----- | -------------- |
| **Blade Templating Basics** | :question: [Test Your Laravel Blade Skills with 8 Tasks](https://www.youtube.com/watch?v=P8s7UHuUhbg)<br>:clapper: [9 Quick Tips about Laravel Blade](https://www.youtube.com/watch?v=-Glz1InN68o) |
| Utilizing Variables in Blade |:book: [Blade: Displaying Data](https://laravel.com/docs/blade#displaying-data) |
## Week 3: Understanding Laravel Authentication
Focus: Explore the fundamental concepts of Laravel authentication.
| Topic | Learning Links |
| ----- | -------------- |
| **Laravel Authentication Fundamentals** | :question: [Test Your Laravel Auth Skills with 7 Tasks](https://www.youtube.com/watch?v=v_3NmwtN_S0)<br>:clapper: [8 Tips & Tricks about Laravel Auth](https://www.youtube.com/watch?v=-dpp4CJS6Vk) |
| Introduction to Starter Kits: Breeze & Laravel UI |:book: [Laravel Breeze Official Documentation](https://laravel.com/docs/starter-kits#laravel-breeze) <br>:book: [Laravel UI: Official Github Page](https://github.com/laravel/ui) |
## Week 4: Mastering Laravel Database Operations
Focus: Grasp the essentials of database operations and Eloquent ORM in Laravel.
| Topic | Learning Links |
| ----- | -------------- |
| **Basics of Database Migrations** |:question: [Test Your Laravel Migrations Skills with 10 Tasks](https://www.youtube.com/watch?v=tPU1hNKI_lc)<br>:book: [Database Migrations](https://laravel.com/docs/migrations) |
| Understanding Basic Eloquent Model and MVC |:question: [Test Your Eloquent Basic Skills with 11 Tasks](https://www.youtube.com/watch?v=AmvLs9sRSH8)<br>:book: [Eloquent: Getting Started](https://laravel.com/docs/eloquent) |
## Week 4: Mastering Laravel Database Operations
Focus: Grasp the essentials of database operations and Eloquent ORM in Laravel.
| Topic | Learning Links |
| ----- | -------------- |
| **Basics of Database Migrations** |:question: [Test Your Laravel Migrations Skills with 10 Tasks](https://www.youtube.com/watch?v=tPU1hNKI_lc)<br>:book: [Database Migrations](https://laravel.com/docs/migrations) |
| Understanding Basic Eloquent Model and MVC |:question: [Test Your Eloquent Basic Skills with 11 Tasks](https://www.youtube.com/watch?v=AmvLs9sRSH8)<br>:book: [Eloquent: Getting Started](https://laravel.com/docs/eloquent) |
## Week 5: Dive into Eloquent ORM and MVC Architecture
Focus: Understand the basic Eloquent Model and Model-View-Controller (MVC) approach in Laravel.
| Topic | Learning Links |
| ----- | -------------- |
| **Basic Eloquent Model and MVC** |:question: [Test Your Eloquent Basic Skills: 11 Tasks to Complete](https://www.youtube.com/watch?v=AmvLs9sRSH8)<br>:book: [Eloquent: Getting Started](https://laravel.com/docs/eloquent) |
## Week 6: Explore Eloquent Relationships
Focus: Learn how to manage and utilize various Eloquent relationships for efficient data handling.
| Topic | Learning Links |
| ----- | -------------- |
| **Eloquent Relationships** |:question: [Test Your Eloquent Relationships Skills: 9 Tasks to Complete](https://www.youtube.com/watch?v=ohj0Mc09DyE)<br>:book: [Eloquent Relationships: One-to-One](https://laravel.com/docs/eloquent-relationships#one-to-one) <br>:book: [Eloquent Relationships: One-to-Many](https://laravel.com/docs/eloquent-relationships#one-to-many) <br>:book: [Eloquent Relationships: BelongsTo](https://laravel.com/docs/eloquent-relationships#one-to-many-inverse) <br>:book: [Eloquent Relation...
## Week 7: Mitigating N+1 Query Problems
Focus: Understand and solve potential issues related to eager loading and the N+1 query problem in Laravel.
| Topic | Learning Links |
| ----- | -------------- |
| **Eager Loading and N+1 Query Problem** |:book: [Relationships: Eager Loading](https://laravel.com/docs/eloquent-relationships#eager-loading) <br> :clapper: [Laravel N+1 Query Detector: Don't Forget Eager Loading](https://www.youtube.com/watch?v=MbN7BIcUnPA) |
## Week 8: Implement Full Simple CRUD Operations
Focus: Learn and practice implementing full simple CRUD (Create, Read, Update, Delete) operations in Laravel.
| Topic | Learning Links |
| ----- | -------------- |
| **Full Simple CRUD** ||
| Route Resource and Resourceful Controllers |:book: [Laravel Resource Controllers](https://laravel.com/docs/controllers#resource-controllers) <br>:page_facing_up: [Simple Laravel CRUD with Resource Controllers [digitalocean.com]](https://www.digitalocean.com/community/tutorials/simple-laravel-crud-with-resource-controllers) <br> :clapper: [Laravel Nested Resource Controllers: Two-Level Deep](https://www.youtube.com/watch?v=9R_9Xe3Fgnw) <br> :clapper: [More videos](videos/route-resource-resourceful-contro...
| Forms, Validation and Form Requests |:question: [Test Your Laravel Validation Skills: Complete 9 Tasks](https://www.youtube.com/watch?v=3ihjumeOMV4)<br>:book: [Laravel Validation](https://laravel.com/docs/validation) <br> :clapper: [New in Laravel 6.13: Format Validation Error Field Name](https://www.youtube.com/watch?v=KD1SqLO58eE) :clapper: [More videos](videos/forms-validation-requests.md) |
| File Uploads and Storage Folder Basics |:question: [Test Your Laravel File Upload Skills: Complete 7 Tasks](https://www.youtube.com/watch?v=_SrQRnOx3q8)<br>:book: [Filesystem: File Uploads](https://laravel.com/docs/filesystem#file-uploads) <br> :clapper: [Laravel: How to Upload File During User Registration](https://www.youtube.com/watch?v=xyQT2pnv_4E) <br> [More videos](videos/file-uploads-and-storage-folder-basics.md) |
| Table Pagination |:book: [Database Pagination](https://laravel.com/docs/pagination) |
---
## Beginner Demo-Project: Personal Blog
### The Task: Simple Personal Blog
You need to create a personal blog with just three pages:
- Homepage: List of articles
- Article page
- Some static text page like "About me"
Also, there should be a Login mechanism (but no Register) for the author to write articles:
- Manage (meaning, create/update/delete) categories
- Manage tags
- Manage articles
- For Auth Starter Kit, use [Laravel Breeze](https://github.com/laravel/breeze) (Tailwind) or [Laravel UI](https://github.com/laravel/ui) (Bootstrap) - that starter kit will have some design, which is enough: the design is irrelevant for accomplishing the task
**DB Structure:**
- Article has title (required), full text (required) and image to upload (optional)
- Article may have only one category, but may have multiple tags
-----
**Routing and Controllers: Basics**
- Callback Functions and Route::view()
- Routing to a Single Controller Method
- Route Parameters
- Route Naming
- Route Groups
**Blade Basics**
- Displaying Variables in Blade
- Blade If-Else and Loop Structures
- Blade Loops
- Layout: @include, @extends, @section, @yield
- Blade Components
**Auth Basics**
- Default Auth Model and Access its Fields from Anywhere
- Check Auth in Controller / Blade
- Auth Middleware
**Database Basics**
- Database Migrations
- Basic Eloquent Model and MVC: Controller -> Model -> View
- Eloquent Relationships: belongsTo / hasMany / belongsToMany
- Eager Loading and N+1 Query Problem
**Full Simple CRUD**
- Route Resource and Resourceful Controllers
- Forms, Validation and Form Requests
- File Uploads and Storage Folder Basics
- Table Pagination
-----