Setting Font/Theme Untuk Visual Code Studio


Download font Fira Code Retina disini

Untuk theme Visual Code Studio, saya install theme Night Owl menggunakan extension dengan melakukan carian di dalam Visual Code Studio.





Laravel part 7 - Eloquent ORM & Model

Mari berkenalan dengan Eloquent ORM terlebih dahulu.

Untuk bahan bacaan, sila ke:

https://laravel.com/docs/5.8/eloquent

Eloquent ORM Laravel menyediakan ActiveRecord yang cantik dan ringkas untuk satu-satu database. Setiap table memiliki model berinteraksi dengan table. Model boleh buat kita query data di dalam table seperti juga masuk data baru ke dalam table.

contoh seperti database students, biasanya nama model bernama student. table itu jamak, model itu singular.

Bukak terminal dan bina model:
php artisan make:model Student
Model created successfully.



secara asasnya, model Student ini sudah berhubung dengan table students

Note that we did not tell Eloquent which table to use for our Flight model. By convention, the "snake case", plural name of the class will be used as the table name unless another name is explicitly specified.


sekiranya table kita namanya tidak sama dengan model dan kita ingin link kan model tersebut dengan nama table itu, boleh kita link melalui arahan  declare  protected $table yang diselitkan ke dalam class Student extends Model.

class Student extends Model
{
    protected $table = 'pelajar_bijak';

}
Tapi untuk kes kita, model kita sudah sama nama dengan table. jadi declaration itu tidak perlu.

begitu juga jika primary key, boleh declare  protected $primaryKey:

class Student extends Model
{
    protected $table = 'pelajar_bijak';
    protected $primaryKey = "pel_bijak_id";
}

Tapi untuk kes kita, model kita sudah sama nama dengan table. jadi declaration primaryKey itu tidak perlu.

Sekarang jom tengok macam mana cara panggil model di https://laravel.com/docs/5.8/eloquent#retrieving-models:

Sekarang ini lihat PelajarController. Kita akan ubah teknik memanggil DB Query kepada penggunaan Model.

Ini adalah memanggil menggunakan DB Query
class PelajarController extends Controller
{
    public function index()
    {
      $pelajar = DB::table('students')->get();
      return view('pelajar.index',['pelajar'=>$pelajar]);
    
    }

Comment      $pelajar = DB::table('students')->get();
gantikan dengan
$pelajar = \App\Student::all();

jika kita refresh, page boleh memanggil data tersebut menggunakan kaedah model

untuk memudahkan pengaturcaraan , kita name spacing kan.
 $pelajar = \App\Student::all();

\App\Student kita letak di atas pengaturcaraan dibawah use Illuminate\Support\Facades\DB;

contoh seperti


jadi kita tidak perlu memanggil \App\Student lagi didalam function.

    public function index()
    {
    //   $pelajar = DB::table('students')->get();
      $pelajar = Student::all();
      return view('pelajar.index',['pelajar'=>$pelajar]);
    }

paparan sekarang ini dipanggil menggunakan kaedah model:



https://drive.google.com/drive/folders/1NFp6WfdDJbDW3jBOJuf5Tv6Wpj7unUvg?usp=sharing




Laravel part 6 - Migration

Mencipta table student menggunakan migration. Migration ialah pembinaan database yang boleh di rollback dan ala-ala github gitu tetapi dalam bentuk database.

php artisan make:migration create_students_table
Created Migration: 2019_10_17_141304_create_students_table


Boleh rujuk di:
https://laravel.com/docs/5.8/migrations

Secara default didalam file create_students_table akan mengandungi id dan timestamps:

    public function up()
    {
        Schema::create('students'function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }


Kita akan buat penambahan didalam  table ini. Untuk dokumentasi cara bina dan jenis-jenis type data boleh lihat di: https://laravel.com/docs/5.8/migrations#creating-columns

Kita ingin menambah column nama, no ic, email dan major ke celah-celah diantgara id dan timestamps.

    public function up()
    {
        Schema::create('students'function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('nama');
            $table->char('noic',15)->unique();
            $table->string('email')->unique();
            $table->string('major');
            $table->timestamps();
        });
    }

kemudian, pergi ke terminal untuk migrate script ini dan run:
php artisan migrate

jika kita tengok, selain script create_students_table, terdapat dua lagi script yang dirun, itu adalah file default yang kita boleh delete dari folder database di dalam laravel.
manakala terdapat table pelajar, yang kita gunakan semasa laravel part 5. Ianya adalah yang asal dicipta menggunakan mysql dan bukan migrate.

Untuk undo semua script migration:
php aritsan migrate:rollback


Namun bagi file pelajar yang kita bina menggunakan mysql, ianya tidak rollback kerana script tersebut tiada didalam folder database dalam laravel

Jom kita melihat struktur data di dalam pelajar



Sekarang tambah 4 data untuk kita test. Table students tersebut sebenarnya sama sahaja data & datatype yang telah kita bina di tutorial ke 6 tempoh hari. Jadi kita boleh menukar table dari pelajardb kepada students di PelajarController untuk melihat hasilnya

class PelajarController extends Controller
{
    public function index()
    {
      $pelajar = DB::table('students')->get();
  
       return view('pelajar.index',['pelajar'=>$pelajar]);
    }
}

hasilnya:

Alhamdulillah. Siap bina database menggunakan migration. Sekarang kita akan membina model pula. Sila ke pelajaran seterusnya.

Install Extension Untuk Visual Code Studio - Laravel

1- Advanced New File by Dominik Kundel
2- Auto Close Tag  by Jun Han
3- Bootstrap 3 Snippets by William Whitehead
4- Bootstrap v4 Snippets by Zaczero
5- Bootstrap 4, font awesome 4, font awesome 5 free by Ashok Koyi
6- DotENV by mikestead
7- Laravel Blade Snippets by Winnie Lin
8- Laravel Artisan by Ryan Naddy
9- Laravel 5 snippets by Winnie Lin
10 - Laravel 5 snippets  by Sachit Tandukar
11- Night Owl (Vs Code Theme) by Sarah Drasner
12- PHP Formatter by Sophisticode
13- PHP IntelliSense by Felix Becker
14-  PHP Namespace Resolver by Mehedi Hassan



Laravel Part 5 - Menyambung Connection Database & View field




1. Cipta database bernama pelajardb yang mengandungi :


2.  Isi data dua atau lebih.


3. Edit file .env dan sesuaikan dengan server mysql kita. DB_DATABASE kita letak nama pelajardb yang telah kita cipta.


Create controller bernama PelajarController menggunakan terminal dgn command

php artisan make:controller PelajarController -resource


Buka file controller Pelajar Controller.php

letak
use Illuminate\Support\Facades\DB;



namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;


class PelajarController extends Controller
{
    public function index()
    {
      $pelajar = DB::table('pelajar')->get();
  
       return view('pelajar.index',['pelajar'=>$pelajar]);
    } }
command  $pelajar = DB::table('pelajar')->get(); bertujuan menyenaraikan semua di dalam table pelajar dan meng-assign-kan nilai tersebut ke $pelajar  .

Semua maklumat tadi berada dalam bentuk array, kerana ada dua row data yang telah kita masukkan, oleh itu kita hantar nilai $pelajar  ke paparan view iaitu ke blade index.blade.php yang terletak di dalam folder pelajar di dalam view.




4.  Di dalam blade di view (index.blade.php) , kita akan membuat @foreach iaitu    @foreach ($pelajar as $pel) untuk memanggil nilai  $pelajar  yang telah dihantar oleh controller untuk kita asingkan mengikut baris.

command:
{{ $loop->iteration }}
kita gunakan untuk paparkan bilangan kiraan rekod yang telah kita jalankan.


@extends('layout.main')

@section ('title','Portal Encraption.blogspot.com')

@section('container')
<div class="container">
  <div class="row">
    <div class="col-10">
      <h1 class="mt-3">Daftar Pelajar</h1>


      <table class="table">
        <thead class="thead-dark">
          <tr>
            <th scope="col">#</th>
            <th scope="col">Nama</th>
            <th scope="col">Email</th>
            <th scope="col">Major</th>
            <th scope="col">Tindakan</th>
          </tr>
        </thead>
      
        <tbody>
          @foreach ($pelajar as $pel)
            <tr>
                <td>{{ $loop->iteration }}</td>
               <td>{{ $pel->nama }}</td>
                <td></th>{{ $pel->email }}</td>
                <td>{{ $pel->major }}</th>
                <td>
                    <a href="" class="badge badge-success">edit</a>
                    <a href="" class="badge badge-danger">delete</a></td>
              </tr>
              @endforeach

        </tbody>


      </table>
    </div>
  </div>
</div>
@endsection


?>

output:




Download di sini

Laravel Part 4 - Mengirim Nilai Di Route kepada View

Ekperimen kali ini cuba mengirim nilai dari web.php (route) kepada view pelajar.

Di fail route, kita assign nilai pada nama tersebut.

<?php

Route::get('/pelajar', function () {
    $nama = 'Mr Encraptor Samado';
    return view('pelajar',['nama' => $nama]);
});
?>

Kemudian di page view pelajar,  hanya menggunakan memanggil menggunakan {{nama}} sahaja seperti
<?php
@section('container')
<div class="container">
  <div class="row">
    <div class="col-10">
      <h1 class="mt-3">Ini Section Pelajar!</h1>
      <br>
      Selamat datang, {{$nama}}!
    </div>
  </div>
</div>
@endsection
?>

Output:

 

Mudah bukan?

Laravel Part 3 - Memusatkan Layout Untuk Memudahkan Pengeditan (master layout)

Seperti anda ketahui, website biasanya mempunyai paparan sama sahaja, hanya content sahaja yang berubah.

Untuk itu, kita boleh memindahkan semua element kecuali content kita ke satu page yang khas, di mana kita akan panggil page tersebut yang mungkin mengandungi header dan footer dan navbar, namun isinya pula, kita akan buat page-page baru. Maknanya content sahaja berada di page-page baru, layoutnya kita tempatkan pada satu page yang satu sahaja.

Jom kita bina master layout


Create folder dibawah folder views, namakan layout. create file bernama main.blade.php, copy semua di dalam welcome.blade.php ke adalam layout/main.blade.php. Kita namakan main.blade.php ini sebagai page induk.

Setiap page akan berubah title  walaupun struktur displaynya adalah sama. Oleh itu kita akan menggunakan @yield('title') di page induk ini (main.blade.php), dan nilai 'title' itu akan dihantar oleh page-page yang lain menggunakan command @section, sebagai contoh nilai title itu kita namakan Portal rasmi James Bond, oleh itu di child page, kita akan taip aturcara seperti @section('title','Portal Rasmi James Bond') untuk menghantar value tersebut ke tempat @yield('title') tadi.








Download Files Yang Berkaitan Dengan Tutorial Laravel Part 3