#MEMBUAT MODEL
Seperti yang sudah dijelaskan sebelumnya pada bagian pengenalan, model adalah bagian yang berhubungan dengan database untuk melakukan modifikasi atau mendapatkan data dari database. Cara untuk membuat model yang paling mudah adalah dengan menggunakan perintah artisan make:model.
php artisan make:model User
File-file model pada framework Larave; 5.5 ini terletak pada direktori app\. Agar terlihat lebih rapi dan terstruktur saya biasanya meletakkan seluruh file model ini dalam 1 direktori model. Perintah untuk membuat model diletakkan dalam direktori tertentu seperti kode di bawah ini.
php artisan make:model Model/User
Perintah di atas akan membuat file User.php di dalam direktori app/Model. Secara default isi dari file model adalah seperti di bawah ini
<?php
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
//
}
Yang perlu anda perhatikan dalam pembuatan model ini adalah penggunaan namespace. Pastikan namespace sudah mengarah ke direktori file model anda dengan benar jika anda membuat model seacara manual tidak menggunakan perintah artisan.
#NAMA TABEL
Secara default nama tabel yang digunakan adalah nama jamak dari nama Class yang anda pakai dalam model tersebut. Misalnya anda membuat model User maka model tersebut akan menggunakan tabel Users secara default. Anda bisa menggunakan tabel lain dengan memberikan nilai pada variabel $table sesuai dengan nama tabel dalam database yang ingin anda hubungkan dengan model tersebut.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'my_flights';
}
#PRIMARY KEYS
Primary keys pada framework Laravel ini jika tidak didefinisikan secara manual maka akan menggunakan field id sebagai default nya dengan tipe int dan auto increment. Untuk mengatur field primary keys secara manual gunakan variabel protected $primaryKey, untuk mengubah tipe dari primary keys gunakan variabel protected $keyType, sedangkan untuk menghilangkan auto increment gunakan variabel public $incrementing seperti contoh di bawah ini.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'my_flights';
protected $primaryKey = 'id_primary';
public $incrementing = false;
protected $keyType = 'string';
}
#TIMESTAMPS
Secara default Laravel 5.5 ini akan mengisi field created_at dan updated_at saat anda melakukan modifikasi pada tabel yang bersangkutan. Jika tabel yang anda gunakan tidak membutuhkan field created_at dan updated_at ini, anda bisa menggunakan variabel $timestamps dan mengisinya dengan nilai false.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'my_flights';
public $timestamps = false;
}
#MODEL - RELATIONSHIPS
Jenis-jenis relationships yang dibahas di sini hanya yang paling umum digunakan saja dalam program sehari-hari. Untuk penjelasan relationships yang lebih spesifik akan diberikan pada artikel tersendiri nantinya saat seluruh artikel tutorial dasar laravel ini selesai ditulis.
#One to One
Relasi one to one ini contohnya adalah 1 user hanya mempunyai 1 nomor telpon dan sebaliknya 1 nomor telepon hanya dimiliki oleh 1 user. Ini hanya contoh saja karena pada kenyataannya 1 user biasanya memiliki lebih dari 1 nomor telepon. Bagaimana cara untuk menghubungkan kedua model tersebut dapat dilihat pada kode di bawah ini
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Get the phone record associated with the user.
*/
public function phone()
{
return $this->hasOne('App\Phone');
}
}
Kode di atas berada pada file model User.php. Yang perlu diingat adalah file model pada contoh ini terletak pada direktori app\ sehingga untuk menghubungkan model User ini dengan model Phone digunakan App\Phone. Secara default field id pada model User akan dihubungkan dengan field user_id pada model Phone.
Jika anda ingin menggunakan foreign key yang berbeda pada model Phone gunakanlah syntax di bawah ini.
return $this->hasOne('App\Phone', 'foreign_key', 'local_key');
foreign_key adalah field pada model Phone, dan local_key adalah field pada model User.
Sedangkan kode pada model Phone adalah seperti di bawah ini
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Phone extends Model
{
/**
* Get the user that owns the phone.
*/
public function user()
{
return $this->belongsTo('App\User');
}
}
Sama seperti penjelasan pada model User, secara default kode di atas akan menghubungkan field user_id pada model Phone dengan field id pada model User. Jika ingin menggunakan nama filed yang berbeda gunakanlah syntax di bawah ini
return $this->belongsTo('App\User', 'foreign_key', 'other_key');
foreign_key adalah field pada model Phone yang akan dihubungkan dengan field other_key pada model User.
#One to Many
Relasi one to many ini misalnya adalah 1 user dapat mempunyai banyak nomor telpon dan 1 nomor telpon hanya bisa dimiliki oleh 1 user. Cara penggunaanya mirip dengan relasi one to one hanya berbeda pada method hasOne yang diganti menjadi hasMany.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Get the phone record associated with the user.
*/
public function phone()
{
return $this->hasMany('App\Phone', 'foreign_key', 'local_key');
}
}
Penjelasan foreign_key dan local_key masih sama penggunaanya seperti penjelasan sebelumnya. Secara default jika foreign_key dan local_key tidak digunakan maka field id pada model User akan dihubungkan dengan field user_id pada model Phone.
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Phone extends Model
{
/**
* Get the user that owns the phone.
*/
public function user()
{
return $this->belongsTo('App\User', 'foreign_key', 'other_key');
}
}
Kode di atas adalah kode dari model Phone. Jika anda perhatikan isinya tidak berbeda dengan relasi one to one. foreign_key adalah field pada model Phone yang akan dihubungkan dengan field other_key pada model User.
Pemberian nama function phone dan function user pada contoh di atas tidak mengikat. Anda bisa menggunakan nama terserah keinginan anda namun sebaiknya nama tersebut dapat memberikan info model apa yang anda hubungkan. Nama function ini nantinya akan digunakan untuk mengambil data dari tabel yang dihubungkan. Bagaimana penggunaannya akan dijelaskan nanti pada artikel tutorial Laravel 5.5 tentang Eloquent. Demikianlah tutorial mengenail Model pada Laravel 5.5 ini. Penjelasan di atas hanya melingkupi hal-hal yang pada umumnya digunakan saja. Penjelasan lebih mendalam memungkinkan akan saya buat setelah seri tutorial Laravel ini berakhir. Selamat mencoba.
Tutorial Laravel 5.5 - Model (Bagian 5)
Reviewed by Donny Winarto
on
July 17, 2018
Rating:
No comments: