How to insert data in database in laravel 5.8 and above
Step 1: Install your Laravel by issuing the Composer with the command called create-project command in your terminal:
$ composer create-project --prefer-dist laravel/laravel blog "5.8.*"
Step 2: Setup your database (DB) and set the credentials in your environment file (.env) in your installed laravel application.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database #do not use this symbol Hash (#) in database
DB_USERNAME=your_username #do not use this symbol Hash (#) in username
DB_PASSWORD=your_password #do not use this symbol Hash (#) in password
Step 3: Go to your application and open the folder by following:
app/Providers/AppServiceProvider.php, open this file and add the below code, to set the defaultStringLength to skip the Error called: Specified key was too long error.
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
Step 4: Now, we will create the migration to create a table named students in a laravel database with following command as follows:
$ php artisan make:migration create_students_table
After successfully table created. open the migration file in the following path: database/migrations/somedate2021_create_students_table.php and paste the below code:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateStudentsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('students', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('first_name');
$table->string('last_name');
$table->string('email');
$table->string('phone');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('students');
}
}
Step 5: Once you are setup with your migration table as above, then lets migrate this table into database with following command:
your table will be migrated successfully into database after the above command.
Step 6: Now, we will create a Eloquent Model with the following command to manage or perform the database table operations.
$ php artisan make:model Student
after successful creation of model in the following path: app/Student.php open the file and follow as below:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Student extends Model
{
protected $table = 'students'; //type the table name
protected $fillable = ['first_name','last_name','email','phone'];
}
Step 7: Create a controller named StudentController.php with the following command:
$ php artisan make:controller StudentController
after successful creation of StudentController, open the following path: app/Http/Controller/StudentController.php and paste the below code:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Student;
class StudentController extends Controller
{
public function create()
{
return view('student.create');
}
public function store(Request $request)
{
$this->validate($request, [
'first_name'=>'required|max:120',
'last_name'=>'required|max:120',
'email'=>'required|email|unique:students',
'phone'=>'required|min:10|max:12'
]);
$student = new Student();
$student->first_name = $request->input('first_name');
$student->last_name = $request->input('last_name');
$student->email = $request->input('email');
$student->phone = $request->input('phone');
$student->save();
return redirect('/add-students')->with('status','Inserted Successfully.');
}
}
Step 8: Create the routes to call the form and submit the form in the following path: routes/web.php as follow:
Route::get('/add-students','StudentController@create');
Route::post('/store-students','StudentController@store');
Step 9: Now, lets create a student form in the following path as: resources/views/student/create.blade.php and paste the below form:
@extends('layouts.app')
@section('content')
<div class="container mt-5">
<div class="row justify-content-center">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h5>Add Student</h5>
</div>
<div class="card-body">
@if(session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
<form action="{{ url('store-students') }}" method="POST">
@csrf
<div class="form-group">
<label for="">First Name</label>
<input type="text" name="first_name" class="form-control" placeholder="Enter First Name">
@if($errors->has('first_name'))
<div class="error">{{ $errors->first('first_name') }}</div>
@endif
</div>
<div class="form-group">
<label for="">Last Name</label>
<input type="text" name="last_name" class="form-control" placeholder="Enter Last Name">
@if($errors->has('last_name'))
<div class="error">{{ $errors->first('last_name') }}</div>
@endif
</div>
<div class="form-group">
<label for="">Email Address</label>
<input type="text" name="email" class="form-control" placeholder="Enter Email Id">
@if($errors->has('email'))
<div class="error">{{ $errors->first('email') }}</div>
@endif
</div>
<div class="form-group">
<label for="">Phone Number</label>
<input type="text" name="phone" class="form-control" placeholder="Enter Phone Number">
@if($errors->has('phone'))
<div class="error">{{ $errors->first('phone') }}</div>
@endif
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Save</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
Thanks for reading...