BLANTERORIONv101

Tutorial Membuat Aplikasi Android POS ( Point of Sale ) dengan Framewok 7 #4

3 Februari 2024

kita akan melanjutkan totorial pos dengan membuat tabel comments dalam project kita. sama seperti step sebelumnya kita harus membuat model dan migration dengan mengetikan cmd/terminal seperti di bawah ini.

php artisan make:model Comment -m

setelah kita generate sama cmd di atas akan menghasil 2 file yaitu berupa model dan migration yang terletak pada app/models/nama file dan database/migrations/nama file. kita akan merubah kode model terlebih dahulu, open file model dan rubah seperti di bawah ini

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    use HasFactory;

    protected $fillable = [
        'post_id', 'name', 'email', 'comment'
    ];
}

fungsi $fillable fungsi sama seperti step sebelumnya. sekarang kita akan merubah migartion, buka file migration dan ubah seperti di bawah ini

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->id();
            $table->unsignedInteger('post_id');
            $table->string('name');
            $table->string('email');
            $table->text('comment');
            $table->timestamps();
         });
    }

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

fungsi create di atas membuat tabel dan kolom dengan type data seperti kode di atas. selanjutnya kia akan membuat model product dan transaksi untuk step nya sama seperti di atas membuat model dan migration terlebih dahulu . buka file model model dan rubah seperti di bawah ini

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;

class Product extends Model
{
    use HasFactory;

    protected $fillable = [
        'image',
        'name',
        'description',
        'price',
        'types',
        'category_id'
    ];

    /**
     * category
     *
     * @return void
     */
    public function category()
    {
        return $this->belongsTo(Category::class,'category_id','id');
    }


    /**
     * image
     *
     * @return Attribute
     */
    protected function image(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => asset('/storage/products/' . $value),
        );
    }

    /**
     * createdAt
     *
     * @return Attribute
     */
    protected function createdAt(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => \Carbon\Carbon::parse($value)->translatedFormat('l, d F Y'),
        );
    }

    /**
     * updatedAt
     *
     * @return Attribute
     */
    protected function updatedAt(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => \Carbon\Carbon::parse($value)->translatedFormat('l, d F Y'),
        );
    }
}

function category befungsi untuk merelasikan tabel category dengan berdasarkan category_id

setelah ini kita akan merubah file migration product , open file dan rubah seperti di bawah ini

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->text('image')->nullable();
            $table->string('name')->nullable();
            $table->text('description')->nullable();
            $table->integer('price')->nullable();
            $table->string('types')->default('');
            $table->unsignedInteger('category_id');
            $table->timestamps();
        });
    }

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

create berfungsi membuat tabel product dan beberapa kolom dengan sesuai type data .

terakir kita akan  membuat model dan migration transaksi , open file transkasi yang telah kita buat dan untuk membuat fie tersebut sama seperti cara sebelumny agar tidak selalu mengulang -ulang kembali , rubah kode model dan migration transaksi seperti di bawah ini

Model

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;

class Transactions extends Model
{
    use HasFactory;
    protected $fillable = [
        'product_id',
        'user_id',
        'quantity',
        'total',
        'status',
        'payment_url'
    ];

    public function product()
    {
        return $this->hasOne(Product::class, 'id', 'product_id');
    }

    public function user()
    {
        return $this->hasOne(User::class, 'id', 'user_id');
    }

    /**
     * createdAt
     *
     * @return Attribute
     */
    protected function createdAt(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => \Carbon\Carbon::parse($value)->translatedFormat('l, d F Y'),
        );
    }

    /**
     * updatedAt
     *
     * @return Attribute
     */
    protected function updatedAt(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => \Carbon\Carbon::parse($value)->translatedFormat('l, d F Y'),
        );
    }
}

Migrations

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('transactions', function (Blueprint $table) {
            $table->id();
           $table->integer('product_id');
           $table->integer('user_id');
           $table->integer('quantity');
           $table->integer('total');
           $table->string('status');
           $table->text('payment_url');
           $table->timestamps();
       });
    }

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

untuk pembuatan struktur database kita mulai dari nama tabel , kolom serta relasi dari semua tabel sudah selesai, sekarang kita akan menajalankan perintah migrate pada project kita yang mana perintah ini akan generate nama tabel dan kolom beserta type datanya ke database jadi proses tidak manual cukup ketikan kode di bawah ini maka nama dan kolom akan tergenarte di database.

php artisan migrate

sebelum mengetikan cmd di atas pastikan kita sudah menjalankan mysql di komputer kita ya, jika berhasil maka akan tampil seperti di bawah ini

laravel

untuk memastikan kembali mari kita cek database yang kita buat sebelumnya, jika tabel sudah ada seperti di bawah ini maka proses migrate kita berhasil

laravel

untuk step kali ini kita telah berhasil dan mengerti bagai mana cara membuat database , nama tabel dan kolom beserta type datanya berikutnya kita akan membuat seeder.

Seeder : ini adalah fitur yang ada dalam framewrok laravel yang mana kita bisa membuat dummy data pada tabel-tabel yang kita telah buat sebelumnya, baiklah tanpa basa basi ketikan cmd atau terminal seperti di bawah ini

php artisan make:seeder UserSeeder

jika perintah di atas berhasil, maka akan tergenarate file userseeder baru di dalam folder database/seeders/UserSeeder.php .

laravel

buka file seeder yang telah kita buat dan rubah kode seperti di bawah ini

<?php

namespace Database\Seeders;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;


class UserSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run()
    {
        DB::table('users')->insert([
            'name'      => 'belajar koding',
            'email'     => 'admin@email.com',
            'password'  => Hash::make('password'),
            'address'     => 'Jl. Bekasi',
            'home_no'     => 'Rumah No. B4/17',
            'phoneNumber'     => '087878013666',
            'city'     => 'Bekasis',
            'roles'     => 'ADMIN',
        ]);
    }

}

kode run di atas berfungsi untuk menambahkan field ke dalam kolom pada tabel users. ketikan kode di bawah ini untuk mamasukan data dummy kita ke dalam tabel users.

php artisan db:seed --class=UserSeeder

fungsi di cmd di atas hanya mengeksekusi userSeeder saja , jika kita mau mengeksekusi semua seeder hapus --class=UserSeder ,  jika berhasil maka akan tampil seperti ini


untuk memastikan apakah benar berhasil cek ke database mysql akan ada data masuk di tabel users seperti di bawah ini


 
alhamdulillah samapai part ke 4 ini, kita sudah berhasil belajar bagai mana cara membuat model,migartion serta seeder, semua tabel dalam database ini akan di proses dengan api untuk menguji aplikasi yang kita buat.

List Part Pembuatan POS dengan Laravel dan Framework 7

1. Tutorial Membuat Aplikasi Android POS ( Point of Sale ) denga Framewok 7 #1

2. Tutorial Membuat Aplikasi Android POS ( Point of Sale ) denga Framewok 7 #2

3. Tutorial Membuat Aplikasi Android POS ( Point of Sale ) denga Framewok 7 #3

4.Tutorial Membuat Aplikasi Android POS ( Point of Sale ) denga Framewok 7 #4




Komentar