
In this article, I am going to create a Blog project using Laravel 8 step by step
Complete Laravel blog project step by step Part1
Laravel Blog Application from scratch
#Technologies
- PHP 7.4
- Laravel 8.x (PHP ≥ 7.3)
- Bootstrap 4.x
- Jquery 3.x
- PhpmyAdmin 4.x
Frontend Features
- Home page with all latest posts
- Post Detail page with comment option
- Right sidebar in all pages with
- Search Option
- 3 Recent Post
- 3 popular post (According to views)
- 3 recent comments (with post link)
- Create a setting for all those things
- Guest Posting(Only Approved User can Post)
- User Account Panel
- Update Profile
- Change Password
- Forget Password
- My Posts
- My Comment
- My Comments
- About Us Page
- Contact Us Page
#Backend Feature
- Admin Login
- Manage Post Category
- Manage Posts
- Post Title dynamically
- Post description dynamically
- Category
- Tags
- Post-Thumbnail
- Post Image
- Manage Post comments (Approve or Disapprove)
- Settings
- Comment Auto approve or Not
- User Auto Active or Not
- Change Limit for recent posts, popular posts, recent comments
Let’s Start
- Before start, I assumed you have already installed composer and all the pre requisites
- Create a project using composer
composer create-project --prefer-dist laravel/laravel laravel-techblog
- Once install the project go to the project folder and open it with any code editor. here I am using Visual Studio
- Run php artisan serve
Now we will create HomeController and change the defult page
php artisan make:Controller HomeController
import HomeController in routes→web.php file
use App\Http\Controllers\HomeController;
set route for HomeController
Route::get("/",[HomeController::class,'index']);
Now we will create an index function, so we need to go Home controller and create a function index
function index()
{
return view('home');
}
- Now we have to create a home.blade.php file in a resources→views folder
In this step, we simply load the view file with the help of controller
- Now we will create models in laravel
- #Data base Connectivity
- connect with MySQL database
- ##Database Table or Model (Database Tables)
- User (Default Laravel Authentication System)
- -name
- -password
- – Category table
- -title
- -detail
- -image
- –Post table
- -user(belongsTo relation)
- -category (belongsTo relation)
- -title
- thumb image
- fill mage
- detail
- tags(command separated tags)
- –comments table
- -user (belongsTo relation)
- -post (belongsTo relation)
- -comment
Let’s start
- open your PHPMyAdmin and create a database name blog
Link your database open .env file and configure as below
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=Password@123
Change according to your database name username and password
Then run the below command
php artisan migrate
OutPut
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (118.10ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (69.99ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (73.23ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated: 2019_12_14_000001_create_personal_access_tokens_table (117.59ms)
This command creates a table named users and table columns. and table columns already define in migration→
2014_10_12_000000_create_users_table.php
Now you can see your database has 5 tables
Now we will create a Category model with the migration on the below command
php artisan make:model Category -m
-m flag will create migration
Once create the model you can see a table named 2021_10_15_090933_create_categories_table.php under the database→ migration→ and paste the below code.
public function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('detail',300);
$table->string('image');
$table->timestamps();
});
}
Note:2021_10_15_090933 date-time will be charged as per your installation date time
php artisan migrate
Migrating: 2021_10_15_092124_create_categories_table
Migrated: 2021_10_15_092124_create_categories_table (66.59ms)
You can see categories table has been created with the columns which we had to define earlier
Note: if note required timestamp columns simply need to add code on the model
protected $timestamp=false;
Model Name Category
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
use HasFactory;
protected $timestamp=false;
}
Now similarly we will do Post and Comment Model
php artisan make:model Post -m
Go to the migration folder and open the newly created post table and paste the below code
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->integer('cat_id');
$table->string('title');
$table->string('thumb');
$table->string('full_img');
$table->text('detail');
$table->string('tags');
$table->timestamps();
});
}
php artisan migrate
php artisan make:model Comment -m
Model created successfully.
Created Migration: 2021_10_15_093715_create_comments_table
Go to the migration folder and open the newly created comments table and paste the below code
public function up()
{
Schema::create('comments', function (Blueprint $table) {
$table->id();
$table->integer('user_id');
$table->integer('post_id');
$table->text('comment');
$table->timestamps();
});
}
php artisan migrate
Part 1 finished. please wait for part2