Cara HasOne Dan HasMany pada Lumen Rest Api

Cara HasOne Dan HasMany pada Lumen Rest Api

Halo sobat Coders, kali kita akan bahas bagaimana cara menggunakan hasOne dan hasMany pada Laravel Lumen 9 php version 8.

Untuk kali ini saya akan memberikan sharing kepada temen-temen mengenai cara penggunaannya pada Laravel Lumen.

Untuk pertama erdnya atau db percontohannya:

image.png

Model Students

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Students extends Model
{
    protected $table = 'students';
}

Controller Stundents

<?php

namespace App\Http\Controllers;

use App\Models\Students;
use Illuminate\Http\Request;

class StudentsController extends Controller
{
    public function index()
    {
        $getAllUsers = Students::query()->get();
        return response()->json([
            'status' => 200,
            'message' => 'Get data all students',
            'data' => $getAllUsers
        ]);
    }

    public function store(Request $request)
    {
        $postsStudents = new Students();
        $postsStudents->username = $request->username;
        $postsStudents->save();
        return response()->json([
            'status' => 200,
            'message' => 'Successfully post data students',
            'data' => $postsStudents
        ]);
    }
    public function update(Request $request, $id)
    {
        $updatedStudents = Students::find($id);
        $updatedStudents->username = $request->username;
        $updatedStudents->save();
        return response()->json([
            'status' => 200,
            'message' => 'Successfully Update data students',
            'data' => $updatedStudents
        ]);
    }
    public function destroy($id)
    {
        $delete = Students::find($id);
        $delete->delete();
        return response()->json([
            'status' => 200,
            'message' => 'Successfully delete data students',
            'data' => $delete
        ]);
    }
}

Route web.php Students

// students
$router->get('/students', 'StudentsController@index');
$router->post('/students', 'StudentsController@store');
$router->put('/students/{id}', 'StudentsController@update');
$router->delete('/students/{id}', 'StudentsController@destroy');

Postman Results Students [ Get ]

image.png

Postman Results Students [ Post ]

image.png

Postman Results Students [ Update ]

image.png

dikarenakan di postman, thunder atau tempat menampung api tidak support langsung metode PUT, diharuskan menggunakan post dan menambahkan _method PUT

POST{url}/students/{id}
KeyValue
username{value username }
_methodPut

Postman Results Students [ Delete ]

image.png

Model Class

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Classes extends Model
{
    protected $table = 'class';
}

Controller Class

<?php

namespace App\Http\Controllers;

use App\Models\Classes;
use Illuminate\Http\Request;


class ClassController extends Controller
{
    public function index()
    {
        $getAllClases = Classes::query()->get();
        return response()->json([
            'status' => 200,
            'message' => 'Get data all class',
            'data' => $getAllClases
        ]);
    }

    public function store(Request $request)
    {
        $postsClasses = new Classes();
        $postsClasses->name_class = $request->name_class;
        $postsClasses->students_id = $request->students_id;
        $postsClasses->save();
        return response()->json([
            'status' => 200,
            'message' => 'Successfully post data class',
            'data' => $postsClasses
        ]);
    }
    public function update(Request $request, $id)
    {
        $updatedClasses = Classes::find($id);
        $updatedClasses->name_class = $request->name_class;
        $updatedClasses->students_id = $request->students_id;
        $updatedClasses->save();
        return response()->json([
            'status' => 200,
            'message' => 'Successfully Update data class',
            'data' => $updatedClasses
        ]);
    }
    public function destroy($id)
    {
        $delete = Classes::find($id);
        $delete->delete();
        return response()->json([
            'status' => 200,
            'message' => 'Successfully delete data class',
            'data' => $delete
        ]);
    }
}

Route web.php Class

// class
$router->get('/classes', 'ClassController@index');
$router->post('/classes', 'ClassController@store');
$router->put('/classes/{id}', 'ClassController@update');
$router->delete('/classes/{id}', 'ClassController@destroy');

Postman Results Clasess [ Get ]

image.png

Postman Results Classes [ Post ]

image.png

Postman Results Classes [ Update ]

image.png

dikarenakan di postman, thunder atau tempat menampung api tidak support langsung metode PUT, diharuskan menggunakan post dan menambahkan _method PUT

POST{url}/classes/{id}
KeyValue
name_class{value name_class}
students_id{value id ( students )}
_methodPut

Postman Results Classes [ Delete ]

image.png

Penjelasan Has One

Penjelasan singkat dari saya, students punya kelas hanya 1 yaitu class, dimana students hanya bisa menerima satu dari class tersebut.

Penjelasan Belongs To

Class memiliki banyak students, bukan students banyak class.

image.png

image.png

Capek ges, sekian ya!