kali ini saya akan membahas penggunaan relasi pada laravel menggunakan Eloquent,
- Buat sebuah project laravel baru , sebagai contoh berinama 'relasi' . dengan
composer create-project laravel/laravel relasi-laravel --prefer-dist
kalau anda bingung baca Instalasi Laravel. - Siapkan database yang akan digunakan dan lakukan configurasi di
app/config/database.php
- Buat 2 buah tabel berinama barang dan pemasok, copas saja script slq dibawah .
CREATE TABLE IF NOT EXISTS `barang` (
`id_barang` int(11) NOT NULL,
`nama` varchar(255) NOT NULL,
`jumlah` int(11) NOT NULL,
`id_pemasok` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
INSERT INTO `barang` (`id_barang`, `nama`, `jumlah`, `id_pemasok`) VALUES
(1, 'Djarum Black', 4, 1),
(2, 'Mizone', 5, 1),
(3, 'Aqua 100ml', 10, 1),
(4, 'Avian', 10, 2),
(5, 'Falcon Gold', 12, 2),
(6, 'Gembok Yale', 16, 2);
CREATE TABLE IF NOT EXISTS `pemasok` (
`id_pemasok` int(11) NOT NULL,
`nama` varchar(255) NOT NULL,
`alamat` text NOT NULL,
`telepon` varchar(20) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
INSERT INTO `pemasok` (`id_pemasok`, `nama`, `alamat`, `telepon`) VALUES
(1, 'PT.IndoFood', 'Jl.Papandayan Bandung', '0876637182'),
(2, 'PT.Barokah Jaya', 'Jl.Cimanuk Garut', '08384758945');
Relasi One to One
- ModelBuat 2 model baru dengan nama
Barang
dan Pemasok
pada direktori app/models/
Model Barang
app/models/Barang.php
Model Pemasokclass Barang extends Eloquent {
protected $table = 'barang'; //Mendefinisikan tabel terkait
protected $primaryKey = 'id_barang'; //Mendefinisikan primaryKey dari tabel terkait
//Buat function baru yang nantinya akan dipanggih
public function pemasok() {
//Relasi one to one menggunakan fungsi belongsTo
// Barang adalah nama class yang akan direlasikan
// id_pemasok maksudnya merelasikan berdasarkan id_pemasok yang ada di tabel barang
return $this->belongsTo('Pemasok', 'id_pemasok');
}
}
app/models/Pemasok.php
class Pemasok extends Eloquent {
protected $table = 'pemasok'; //Mendefinisikan tabel terkait
protected $primaryKey = 'id_pemasok'; //Mendefinisikan primaryKey dari tabel terkait
}
- RouteDisini kita akan menampilkan field dari database dengan memanfaatkan relasi yang ada.
Route::get('relasi-1', function()
{
$query = Barang::where('id_barang',1)->first();
return $query->pemasok->nama;
});
Penjelasan dari script di atas :$query
berisi satu record barang yang diambil berdasarkan id_barangpemasok
function yang ada pada model Barang.nama
field yang ingin ditampilkan dari tabel pemasok

Relasi One to Many
- ModelUntuk model barang biarkan dulu seperti itu , kita akan melakukan sedikit perubahan pada model
Pemasok
yaitu menambahkan function bernama barang.- Model Pemasok
app/models/Pemasok.php
class Pemasok extends Eloquent {
protected $table = 'pemasok'; //Mendefinisikan tabel terkait
protected $primaryKey = 'id_pemasok'; //Mendefinisikan primaryKey dari tabel terkait
//Buat function baru yang nantinya akan dipanggih
public function barang() {
//Relasi one to one menggunakan fungsi belongsTo
// Barang adalah nama class yang akan direlasikan
// id_pemasok maksudnya merelasikan berdasarkan id_pemasok yang ada di tabel barang
return $this->hasMany('Barang', 'id_pemasok');
}
}
- RouteDisini kita akan menampilkan barang berdasarkan pemasok.
Route::get('relasi-2',function(){
$pemasok = Pemasok::where('id_pemasok',1)->first();
echo 'Pemasoknya : '. $pemasok->nama;
foreach ($pemasok->barang as $data)
echo '<li> Barang : ' . $data->nama .'</li>';
});
Penjelasan :foreach
menampilkan data barang$pemasok->barang
mengambil semua data barang yang berdasarkan pemasok terkait.$data->nama
field yang ditampilkan dari tabel barang.

Relasi Many to Many
Penerapan relasi many to many dalam pembahasan ini kita membuat 3 buah tabel baru yaitu post , tag dan tag_relasi, CREATE TABLE IF NOT EXISTS `post` (
`id_post` int(11) NOT NULL,
`judul` varchar(255) NOT NULL,
`content` text NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
--
-- Dumping data for table `post`
--
INSERT INTO `post` (`id_post`, `judul`, `content`) VALUES
(1, 'Membuat Relasi dengan Eloquent di Laravel', 'cara membuat relasi dengan eloquent adalah bla bla bla '),
(2, 'Tutorial PHP dan Mysql', 'php dan mysql adalah sesuatu yang tidak bisa dipisahkan dalam sistem informasi.......'),
(3, 'Tutorial database mySql', 'cara menggunakan database sql adalah bla, bla, bla'),
(4, 'Tutorial array dengan PHP', 'caranya adalah bla, bla, bla '),
(5, 'Tutorial Laravel pemula', 'Laravel adalah ....');
CREATE TABLE IF NOT EXISTS `tag` (
`id_tag` int(11) NOT NULL,
`tag` varchar(255) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
--
-- Dumping data for table `tag`
--
INSERT INTO `tag` (`id_tag`, `tag`) VALUES
(1, 'laravel'),
(2, 'framework'),
(3, 'eloquent'),
(4, 'database'),
(5, 'php'),
(6, 'Sql');
CREATE TABLE IF NOT EXISTS `tag_relasi` (
`id_tag` int(11) NOT NULL,
`id_post` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `tag_relasi`
--
INSERT INTO `tag_relasi` (`id_tag`, `id_post`) VALUES
(1, 1),
(2, 1),
(3, 1),
(4, 2),
(4, 2),
(4, 3),
(5, 4),
(6, 1),
(6, 2),
(1, 5);
- Model Post class Post extends Eloquent {
protected $table = 'post'; #Deklarasikan nama tabel
protected $primaryKey = 'id_post'; #Deklarasikan primary key dari tabel terkait
# buat function baru berinama tag
# Many to many menggunkan fungsi belongsToMany
# Tag adalah model , tag_relasi tabel pivot
public function tag() {
return $this->belongsToMany('Tag', 'tag_relasi', 'id_post', 'id_tag');
}
}
- Model Tag class Tag extends Eloquent {
protected $table = 'tag';
protected $primaryKey = 'id_tag';
# buat function baru berinama post
# Many to many menggunkan fungsi belongsToMany
# Post adalah model , tag_relasi tabel pivot
public function post() {
return $this->belongsToMany('Post', 'tag_relasi', 'id_tag', 'id_post');
}
}
Untuk tabel tag_relasi tidak perlu dibuatkan model karena hanya merupakan tabel pivot (perantara).- Route
Pada route relasi-4 menampilkan tag berdasarkan post dan route relasi-5 menampilkan post berdasarkan tag
Route::get('relasi-4', function() {
# panggil post berdasarkan id
$post = Post::where('id_post', '=', '1')->first();
echo 'Post nya : '.$post->judul .'<br>';
# Tampilkan seluruh tag post tersebut
foreach ($post->tag as $data)
echo '<li>' . $data->tag . '</li>';
});
Route::get('relasi-5', function() {
# Temukan tag laravel
$tag = Tag::where('tag', '=', 'laravel')->first();
echo 'Tag nya : '.$tag->tag .'<br>';
# Tampilkan semua posting dengan tag laravel
foreach ($tag->post as $data)
echo '<li> Judul : ' . $data->judul . ' <strong>' . $data->content . '</strong></li>';
});
- OUTPUTRelasi 4

Relasi 5

Selesai sudah pembahasan tentang 3 Relasi di atas , sebenarnya masih ada jenis relasi lain tapi mungkin lain waktu akan di posting tutorialnya..
Sumber : Ilmuwebsiteku.com Relasi dengan database Eloquent
Komentar ini telah dihapus oleh pengarang.
BalasHapuska kalo cara insert ke dbnya pake form gimana ?
BalasHapustinggal tembak ke controllernya aja
Hapus