Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

How To Write Logics In Model In Laravel 9?

How To Write Logics In Model In Laravel 9?

In this tutorial, I will give you an example of “How to Write Logics In Model In Laravel 9”, So you can easily apply it to your Laravel 9 application.

So, let’s start from scratch to Move Controller Logic in the Model in Laravel 9 :

Generating Migration with Model :

php artisan make:model Post -m

Migration Structure :

<?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');
            $table->string('slug');
            $table->Text('content');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
};

Run Migration :

php artisan migrate
Write Logics In Model In Laravel 9

routes\web.php :

<?php

use Illuminate\Support\Facades\Route;

use App\Models\Post;


/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

#Write Logics In Model Example
Route::get('/create-post',[Post::class,'create']);
Route::post('/store-post',[Post::class,'store'])->name('store.post');

app\Models\Post.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Support\Str;
use Illuminate\Http\Request;

class Post extends Model
{
    use HasFactory;


    #Create Post
    public function create(){
        return view('post.create');
    }

    #Generate Slug from Title
    public function title() : Attribute {
        return new Attribute(
            set: fn($value) => [
                'title' => $value,
                'slug'  => Str::slug($value)
            ]
        );
    }

    #Store Post
    public function store(Request $request){
       $post = new Post();
       $post->title = $request->title;
       $post->content = $request->content;
       $post->save();
       return 'success';
    }
}

resources\views\post\create.blade.php :

move controller logic into model in laravel
<div class="container">
   <div class="row justify-content-center">
      <div class="col-lg-8">
      <div class="main">
      <h3 style="background-color:powderblue;">How to Write Logics In Model in Laravel 9 - Example</h3>
      <form action="{{ route('store.post') }}" method="post" enctype="multipart/form-data">
         @csrf
         <div class="form-group">
            <label for="title">Title<span class="text-danger">*</span></label>
            <input type="text" name="title" class="form-control" required>
         </div>
         <div class="form-group">
            <label for="content">Content<span class="text-danger">*</span></label>
            <input type="text" name="content" class="form-control" required>
         </div>
         <div class="form-group">
            <button type="submit" class="btn btn btn-info">Save Post</button>
         </div>
      </form>
      </div>
      </div>
   </div>
</div>

Output:-

how to write logics in laravel

In this article, we learned “How to Write Logics In Model In Laravel 9”, I hope this article will help you with your Laravel application Project.

Also Read:- How to Use Service Class In Laravel.