Inside this article we will see the concept i.e Laravel 9 Create Record if Not Exists Example Tutorial. Article contains the classified information about How to create record if not exists in Laravel.
If you are looking for a solution i.e How to check if a record exists with Laravel Eloquent then this article will help you a lot for this. Tutorial is super easy to understand and implement it in your code as well.
Read More: Laravel 9 How To Get Last 5 Records Using Model Tutorial
Let’s get started.
Laravel Installation
Open terminal and run this command to create a laravel project.
composer create-project laravel/laravel myblog
It will create a project folder with name myblog inside your local system.
To start the development server of laravel –
php artisan serve
URL: http://127.0.0.1:8000
Assuming laravel already installed inside your system.
Create Database & Connect
To create a database, either we can create via Manual tool of PhpMyadmin or by means of a mysql command.
CREATE DATABASE laravel_app;
To connect database with application, Open .env file from application root. Search for DB_ and update your details.
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_app DB_USERNAME=root DB_PASSWORD=root
Create Migration
Open project into terminal and run this command to create a migration file.
$ php artisan make:migration create_posts_table
Above command will create 2022_09_29_212520_create_posts_table.php file inside /database/migrations folder.
Read More: Laravel 9 How To Set Default Values in Model For Columns
Open xxx_create_posts_table.php file and write this code into it.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title', 120);
$table->string('slug', 120);
$table->text('body');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
};
Run Migration
Back to terminal and run this command for migrations.
$ php artisan migrate
It will create posts table into your database.
Create Model
Back to terminal and run this command to create model.
$ php artisan make:model Post
It will create a model file Post.php inside /app/Models folder.
Read More: Laravel 9 How To Get Request Headers Example Tutorial
Open Post.php and write this following code into it.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
protected $fillable = [
'title', 'slug', 'body'
];
}
Create Controller
Back to project terminal and run this command to create a controller file.
$ php artisan make:controller PostController
Above command will create a file i.e PostController.php inside /app/Http/Controllers folder.
Example #1
Open PostController.php and write this following code into it.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Post;
class PostController extends Controller
{
public function index(Request $request)
{
Post::firstOrCreate(
['slug' => $request->slug],
['title' => $request->title, 'body' => $request->body]
);
}
}
firstOrCreate method is used to create a record if it does not already exist in the table in laravel. It has two parameters, conditions and fields and these parameters should be an array.
It tries to find a model matching the attributes you pass in the first parameter. If a model is not found, it automatically creates and saves a new record after applying attributes passed in the second parameters including first parameter field and values.
Read More: Laravel 9 How To Get Database Name Example Tutorial
This code snippet will create a new post record including title, body and slug fields in the post table if the record is not already exist with this particular slug.
Example #2
Open PostController.php and write this following code into it.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Post;
class PostController extends Controller
{
public function index()
{
$slug = 'platinum';
$post = Post::where('slug', $slug)->first();
if (is_null($post)) {
$post = new Post();
$post->title = 'Platinum';
$post->slug = 'platinum';
$post->body = 'Test platinum';
$post->save();
dd($post);
}
}
}
We hope this article helped you to learn Laravel 9 Create Record if Not Exists Example Tutorial in a very detailed way.
If you liked this article, then please subscribe to our YouTube Channel for PHP & it’s framework, WordPress, Node Js video tutorials. You can also find us on Twitter and Facebook.
Read more