Introduction
- Overview of the project and the functionalities it will include: posts, comments, and user authentication.
- Brief explanation of why Laravel is suitable for such a project.
Chapter 1: Setting Up Your Laravel Project
Installation
-
Code Example: Installing Laravel
composer create-project --prefer-dist laravel/laravel laravelBlog
Environment Configuration
- Setting up the database connection in
.env
file.
Chapter 2: Building the Blog's Structure
Database Migration
-
Code Example: Creating Posts Table
php artisan make:migration create_posts_table --create=posts
// Inside the migration file Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('body'); $table->unsignedBigInteger('user_id'); $table->foreign('user_id')->references('id')->on('users'); $table->timestamps(); });
Eloquent Models
-
Code Example: Post Model
namespace App\Models; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $fillable = ['title', 'body', 'user_id']; }
Chapter 3: Routing and Controllers
Basic Routing
-
Code Example: Web Routes
Route::get('/', 'PostController@index'); Route::resource('posts', 'PostController');
Creating Controllers
-
Code Example: Post Controller
php artisan make:controller PostController --resource
public function index() { $posts = Post::all(); return view('posts.index', compact('posts')); }
Chapter 4: Views and Blade Templates
Layouts and Components
-
Code Example: Master Layout
{{-- resources/views/layouts/app.blade.php --}} <!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blog</title> </head> <body> @yield('content') </body> </html>
-
Code Example: Post Index View
{{-- resources/views/posts/index.blade.php --}} @extends('layouts.app') @section('content') <h1>Posts</h1> @foreach ($posts as $post) <div> <h2>{{ $post->title }}</h2> <p>{{ $post->body }}</p> </div> @endforeach @endsection
Chapter 5: User Authentication
Using Laravel Breeze for Authentication
-
Code Example: Installing Laravel Breeze
composer require laravel/breeze --dev php artisan breeze:install npm install && npm run dev php artisan migrate
- Explanation of how Breeze provides authentication scaffolding.
Chapter 6: Adding Comments
Migration and Model for Comments
-
Code Example: Comments Migration
php artisan make:migration create_comments_table --create=comments
Schema::create('comments', function (Blueprint $table) { $table->id(); $table->text('body'); $table->unsignedBigInteger('post_id'); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); $table->timestamps(); });
Chapter 7: Deployment
Preparing for Deployment
-
Code Example: Optimizing Laravel for Production
php artisan config:cache php artisan route:cache
Conclusion
- Recap of what was built and suggestions for further enhancement (like adding tags, search functionality, and a richer commenting system).
- Encouragement to explore Laravel's extensive documentation and community for further learning.
This comprehensive guide covers all the foundational elements needed to build and deploy a basic blog with Laravel, making it an excellent starting point for any aspiring Laravel developer.