Tutorial Laravel 8 crud langkah demi langkah dari awal – Codewithaden

Laravel adalah kerangka kerja web berbasis PHP yang telah meletakkan dasar bagi pengembang web untuk membuat aplikasi web tanpa khawatir tentang hal-hal kecil. Selain itu, Laravel menyediakan arsitektur MVC (model-view-controller) untuk membangun aplikasi CRUD dengan cepat.

Setiap enam bulan, tim pengembang inti hadir dengan versi Laravel yang lebih baru dan lebih baik; Ini adalah Laravel 8. Posting ini akan memandu Anda dengan membuat aplikasi Laravel 8 CRUD dengan cepat. Jika Anda seorang pemula di Laravel, artikel ini akan membantu Anda membuat, memasukkan, memperbarui, dan menghapus model dari database.

Laravel 8 CRUD

Untuk membuat aplikasi CRUD di Laravel 8, mesin Anda harus memiliki versi PHP> = 7.3 dan komposer dengan ekstensi tambahan berikut.

  1. Ekstensi PHP BCMATH
  2. Ekstensi PHP CTYPE
  3. Ekstensi PHP OpenSSL
  4. Ekstensi PDO PHP
  5. Ekstensi php tokenizer
  6. Ekstensi PHP XML
  7. FileInfo PHP Extension
  8. Ekstensi JSON PHP
  9. Ekstensi PHP MBSTRING

Langkah 1: Memasang Laravel 8

Jika Anda menggunakan Laravel Valet, Anda perlu memperbarui sistem Anda untuk membuat proyek Laravel terbaru. Anda dapat menemukan lebih banyak di Peningkatan Laravel Valet memandu.

Anda juga dapat menginstal Laravel 8 menggunakan perintah berikut.

composer create-project laravel/laravel --prefer-dist laravel8crud 

Saya akan menggunakan Kode Studio Visual Sebagai editor untuk proyek ini.

Langkah 2: Konfigurasikan database MySQL

Kami akan menggunakan database MySQL untuk membuat database dan mengembalikannya ke proyek.

Laravel menyediakan .env file untuk menambahkan kredensial. Buka file dan edit kode berikut.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel8crud
DB_USERNAME=root
DB_PASSWORD=root 

Nama pengguna dan kata sandi akan berbeda untuk Anda berdasarkan kredensial database Anda.

Laravel hadir dengan migrasi default seperti pengguna , Password_resets , dan create_failed_jobs meja. Sekarang buka terminal dan ketik perintah berikut untuk menjalankan migrasi Anda.

php artisan migrate 

Anda dapat melihat di database Anda bahwa tabel ini dibuat, dan tabel -tabel itu kosong.

Langkah 3: Buat model dan migrasi khusus

Kami akan membuat proyek di sekitar game PlayStation 5. Jadi pengguna dapat membuat game PS5, mengedit, dan menghapus game. Jadi, mari kita buat model game dan migrasi.

php artisan make:model Game -m 

Ini akan membuat dua file.

  1. Model Game.php
  2. create_games_table migrasi

Tambahkan bidang baru di dalam create_games_table.php file migrasi.

// create_games_table.php

public function up()
{
        Schema::create('games', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->integer('price');
            $table->timestamps();
        });
} 

Bidang ID dan cap waktu dibuat oleh Laravel secara default. Nama dan harga adalah bidang khusus yang dapat ditambahkan pengguna melalui WebForms. Akhirnya, Anda dapat menjalankan migrasi untuk membuat tabel di database.

php artisan migrate 

Langkah 4: Buat pengontrol Laravel 8.

Routing sumber daya Laravel menetapkan tipikal ” Crud ”Rute ke pengontrol dengan satu baris kode. Karena aplikasi kami adalah operasi dasar CRUD, kami akan menggunakan pengontrol sumber daya untuk proyek kecil ini.

php artisan make:controller GameController --resource 

Dalam instalasi baru Laravel 8, tidak ada awalan namespace yang diterapkan pada grup rute tempat rute Anda dimuat.

Dalam rilis Laravel sebelumnya, RouteserviceProvider berisi a namespace Properti. Nilai properti ini secara otomatis akan diawali dengan definisi dan panggilan rute pengontrol ke tindakan Pembantu / Url :: aksi metode. Di Laravel 8.x, properti ini batal secara default. Ini berarti bahwa tidak ada awalan namespace otomatis yang akan dilakukan oleh Laravel. ” Laravel 8.x Docs – Catatan Rilis

Di sini, Anda dapat membuka App \ penyedia \ routeserviceProvider.php file dan memodifikasi kode berikut di dalam metode boot ().

// RouterServiceProvider.php

Route::middleware('web')
                ->namespace('App\Http\Controllers')
                ->group(base_path('routes/web.php')); 

Hanya itu saja. Sekarang dapat menemukan pengontrol. Jika file pengontrol Anda ada di tempat lain, Anda harus menetapkan jalur di namespace.

Perhatikan di sini bahwa saya telah menambahkan -sumber Bendera, yang akan mendefinisikan enam metode di dalam GameController, yaitu:

  1. Indeks: Metode (index () digunakan untuk menampilkan daftar game).
  2. Membuat: Metode (create) akan menampilkan formulir atau tampilan untuk membuat game).
  3. Toko: Metode (Store () digunakan untuk membuat game di dalam database. Catatan: Buat metode mengirimkan data formulir ke metode ()).
  4. Menunjukkan: (Metode show () akan menampilkan game yang ditentukan).
  5. EDIT: Metode edit () akan menampilkan formulir untuk mengedit game. Formulir akan diisi dengan data game yang ada).
  6. Memperbarui: Metode Update () digunakan untuk memperbarui game di dalam database. Catatan: Edit () Metode mengirimkan data formulir untuk memperbarui () metode).
  7. Menghancurkan: Metode Destroy () digunakan untuk menghapus game yang ditentukan).

Secara default Gamecontroller.php File dibuat di dalam Aplikasi >> http >> pengontrol map.

Anda dapat melihat bahwa file tersebut berisi operasi CRUD dalam bentuk fungsi yang berbeda. Kami akan menggunakan fungsi -fungsi ini, satu per satu, untuk membuat operasi CRUD.

Itu -sumber Bendera akan memanggil metode internal Resource () dengan Laravel untuk menghasilkan rute berikut. Anda dapat memeriksa daftar rute menggunakan perintah berikut.

php artisan route: list 

Langkah 5: Tentukan rute

Untuk menentukan rute di Laravel, Anda perlu menambahkan kode rute di dalam rute >> web.php mengajukan.

// web.php

Route::resource('games', 'GameController'); 

Langkah 6: Mengkonfigurasi Bootstrap di Laravel 8

Laravel menyediakan bootstrap dan perancah vue yang terletak di Laravel/UI Paket komposer, yang dapat diinstal menggunakan komposer.

composer require laravel/ui 

Sekali Laravel/UI Paket telah diinstal, Anda dapat menginstal perancah frontend menggunakan perintah UI Artisan.

php artisan ui bootstrap 

Sekarang, tolong jalankan " NPM Instal && NPM Run Dev ”Untuk mengkompilasi perancah baru Anda.

Langkah 7: Buat tampilan di Laravel 8

Tampilan berisi HTML yang dilayani oleh aplikasi Anda dan pisahkan logika pengontrol/aplikasi Anda dari logika presentasi Anda. Pemandangan disimpan di Sumber Daya/Tampilan direktori.

Di dalam pandangan direktori, kita juga perlu membuat file tata letak. Jadi, kami akan membuat file di dalam pandangan Direktori dipanggil Layout.blade.php. Tambahkan kode berikut di Layout.blade.php mengajukan.





  
  
  
  Laravel 8 CRUD Tutorial
  


  
@yield('content')

Di dalam Sumber Daya >> Tampilan Folder, buat file tiga blade berikut.

  1. create.blade.php
  2. edit.blade.php
  3. index.blade.php

Di dalam create.blade.php file, tulis kode berikut.


@extends('layout')

@section('content')

Add Games Data
@if ($errors->any())
    @foreach ($errors->all() as $error)
  • {{ $error }}
  • @endforeach

@endif
@csrf
@endsection

Dalam kode ini, kami telah menentukan tindakan, yang akan memanggil metode toko () dari metode Gamecontroller. Ingat, kami telah menggunakan pengontrol sumber daya.

Sekarang, kita perlu mengembalikan tampilan Buat ini dari metode Create () dari GameController. Jadi tulis kode berikut di dalam Gamecontroller's create () metode.

// GameController.php

public function create()
{
        return view('create');
} 

Pergi ke https: //laravel8crud.test/games/create atau http: // localhost: 8000, Dan Anda akan melihat sesuatu seperti di bawah ini.

Laravel

Langkah 8: Tambahkan aturan validasi dan simpan data.

Pada langkah ini, kami akan menambahkan Validasi bentuk Laravel . Sekarang, tambahkan Gamecontroller.php untuk mengimpor namespace dari Permainan model di dalam Pengontrol permainan .php mengajukan.

Tulis kode berikut di dalam Gamecontroller.php file toko() fungsi

// GameController.php

public function store(Request $request)
{
        $validatedData = $request->validate([
            'name' => 'required|max:255',
            'price' => 'required',
        ]);
        $show = Game::create($validatedData);
   
        return redirect('/games')->with('success', 'Game is successfully saved');
} 

Kami menggunakan $ request-> validate () Metode untuk validasi, yang menerima array aturan validasi. Itu

Aturan validasi [] adalah array asosiatif. Itu kunci akan menjadi field_name dan nilai menjadi aturan validasi. Parameter kedua adalah array opsional untuk pesan validasi khusus. Aturan dipisahkan dengan tanda pipa "|". Dalam contoh ini, kami menggunakan aturan validasi paling dasar.

Jika validasi gagal, itu akan mengarahkan kembali ke halaman formulir dengan pesan kesalahan. Di sisi lain, jika validasi berlalu, itu akan membuat game baru dan menyimpannya di database.

Dalam hal kesalahan, kita perlu mengulangi pesan kesalahan di dalam create.blade.php file, yang telah kami lakukan.

Jika Anda membiarkan semua bidang formulir kosong, Anda akan menemukan pesan kesalahan seperti gambar ini.

Laravel

Kita dapat melihat bahwa kita mendapatkan kesalahan, tetapi jika kita mengisi semua data yang benar, Anda masih tidak akan menyimpan data ke dalam database karena pengecualian penugasan massa.

Untuk mencegah Pengecualian penugasan massal , kita perlu menambahkan $ diisi array di dalam Game.php model.

Sekarang, jika Anda mengisi bidang formulir yang benar, itu membuat baris baru dalam database.

Langkah 9: Tampilkan game

Untuk menampilkan daftar game, kita perlu menulis kode HTML di dalam index.blade.php mengajukan. Tapi sebelum itu, mari kita tulis fungsi indeks () Gamecontroller.php file untuk mendapatkan array data dari database.

// GameController.php

public function index()
{
        $games = Game::all();
        
        return view('index',compact('games'));
} 

Sekarang, tulis kode berikut di dalam index.blade.php mengajukan.


@extends('layout')

@section('content')

@if(session()->get('success'))
{{ session()->get('success') }}

@endif @foreach($games as $game) @endforeach
ID Game Name Game Price Action
{{$game->id}} {{$game->name}} {{$game->price}} Edit
@csrf @method('DELETE')
@endsection

Kami telah menambahkan dua tombol edit dan hapus untuk melakukan operasi masing -masing.

Langkah 10: Lengkapi Edit dan Perbarui

Untuk mengedit data, kami memerlukan data dari database. Tambahkan kode berikut di dalam Gamecontroller.php Fungsi Edit File.

// GameController.php

public function edit($id)
{
        $game = Game::findOrFail($id);

        return view('edit', compact('game'));
} 

Sekarang, buat file baru di dalam folder tampilan yang dipanggil edit.blade.php dan tambahkan kode berikut.

@extends('layout')

@section('content')

Edit Game Data
@if ($errors->any())
    @foreach ($errors->all() as $error)
  • {{ $error }}
  • @endforeach

@endif
@csrf @method('PATCH')
@endsection

Sekarang buka halaman indeks dan kemudian buka halaman edit game tertentu, dan Anda akan melihat formulir dengan nilai -nilai yang diisi.

Tambahkan kode berikut di dalam Pembaruan Gamecontroller () fungsi.

// GameController.php

public function update(Request $request, $id)
{
        $validatedData = $request->validate([
            'name' => 'required|max:255',
            'price' => 'required'
        ]);
        Game::whereId($id)->update($validatedData);

        return redirect('/games')->with('success', 'Game Data is successfully updated');
} 

Sekarang Anda dapat memperbarui semua data ke dalam database.

Langkah 11: Buat fungsionalitas hapus

Untuk menghapus data dari database, kami akan menggunakan Gamecontroller's Destroy () fungsi.

// GameController.php

public function destroy($id)
{
        $game = Game::findOrFail($id);
        $game->delete();

        return redirect('/games')->with('success', 'Game Data is successfully deleted');
} 

Fungsi delete () disediakan oleh Laravel untuk menghapus data dari database.

File pengontrol lengkap adalah ini.

validate([
            'name' => 'required|max:255',
            'price' => 'required',
        ]);
        $show = Game::create($validatedData);
   
        return redirect('/games')->with('success', 'Game is successfully saved');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $game = Game::findOrFail($id);

        return view('edit', compact('game'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $validatedData = $request->validate([
            'name' => 'required|max:255',
            'price' => 'required'
        ]);
        Game::whereId($id)->update($validatedData);

        return redirect('/games')->with('success', 'Game Data is successfully updated');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $game = Game::findOrFail($id);
        $game->delete();

        return redirect('/games')->with('success', 'Game Data is successfully deleted');
    }
}
 

Hanya itu saja. Sekarang, Anda dapat membuat, membaca, memperbarui, dan menghapus data di Laravel.

Jika Anda tertarik dengan kerangka JavaScript frontend seperti Vue dengan Laravel atau Angular dengan Laravel, lihat panduan seperti Vue Laravel Crud dan Tutorial Laravel Angular Contoh.

Saya telah meletakkan seluruh kode operasi CRUD di github sehingga Anda dapat memeriksanya juga.

Kode GitHub

Artikel ini berasal dari website Winpoin, dan kemudian diterjemahkan ke bahasa indonesia, baca artikel asli disini

Leave a Reply

Your email address will not be published. Required fields are marked *