Memahami Relasi Tabel pada Yii2 - Hallo sahabat Dev-Create, Pada Artikel yang anda baca kali ini dengan judul Memahami Relasi Tabel pada Yii2, kami telah mempersiapkan artikel ini dengan baik untuk anda baca dan ambil informasi didalamnya. mudah-mudahan isi postingan Artikel ActiveRecord, Artikel database, Artikel Relationship, Artikel yii2, yang kami tulis ini dapat anda pahami. baiklah, selamat membaca.

Judul : Memahami Relasi Tabel pada Yii2
link : Memahami Relasi Tabel pada Yii2

Baca juga


Memahami Relasi Tabel pada Yii2

Basis data yang saat ini kita pakai masih banyak yang mengusung konsep RDBMS atau Relational Database Management System. Sesuai namanya, sistem yang digunakan untuk mengelolanya adalah relational yang berarti bahwa antara satu tabel dengan tabel yang lainnya memiliki hubungan (relasi). Hubungan tersebut bermacam-macam bentuknya, bisa one-to-one, one-to-many, bahkan many-to-many. Kita akan mempelajari bagaimana merelasikan antar-tabel tetapi dalam konteks aplikasi PHP menggunakan Yii Framework. Terlepas, apakah secara struktur basis data tabel-tabel tersebut benar-benar berelasi atau tidak.

Dalam pembelajaran ini kita akan menggunakan kelas ActiveRecord miliki Yii. Oleh karena itu, setiap tabel yang dicontohkan di sini harus dibuat Model-nya terlebih dahulu. Silakan gunakan Gii untuk membuat model.

Relasi One-to-One

Relasi ini berarti bahwa setiap satu baris data pada tabel A memiliki satu relasi dengan satu baris pada tabel B. Sebagai contoh adalah tabel user (bawaan Yii Framework) dengan tabel profil. Tabel profil berisi informasi lebih lengkap mengenai user dari sistem kita. Kedua tabel tersebut memiliki sebuah field yang akan kita gunakan sebagai jangkar atau penghubung. Syaratnya, kedua field tersebut memiliki tipe data yang sama. Pada tabel user, field-nya adalah id sedangkan tabel profil field-nya adalah user_id.


Bagaimana membuat relasinya? Gunakan fungsi hasOne() seperti pada contoh berikut:

use app\models\Profil;

class User extends ActiveRecord implements IdentityInterface
{
//...
public function getProfil() //nanti diakses nama field 'profil'
{
return $this->hasOne(Profil::className(), ['user_id' => 'id']);
}
}


Rumusnya adalah:


public function getNamaTerserahAnda(){
return $this->hasOne(NamaModelKelasRelasi, ['field_kelas_relasi' => 'field_kelas_ini']);
}


Contoh gridview-nya seperti ini:

<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'username',
'profil.namalengkap',
],
]); ?>


Relasi One-To-Many

Untuk one-to-many ini mari kita gunakan sebuah contoh tabel post yang berisi tulisan-tulisan oleh para pengguna.


Masih di kelas User, kita tambahkan fungsi berikut:

public function getPosts()
{
return $this->hasMany(Post::className(), ['user_id' => 'id']);

}


Pada bagian controller, kita menggunakan kode berikut:


public function actionPost()
{
return $this->render('user_post', [
'model' => User::find()->all(),
]);
}

Pada bagian view, dapat digunakan sintaks seperti berikut:

foreach ($model as $user) {
echo '<b>Nama lengkap: ' . $user->profil['namalengkap'] . '</b><br>'; //kita dapatkan dari relasi one-to-one dengan profil
echo 'Postingan: <ul>';
foreach ($user->posts as $post) {
echo '<li>'. $post->judul.'</li>';
}
echo '</ul>';
}

Relasi Many-to-Many

Contoh mudah untuk kasus many-to-many adalah barang dan pesanan. Setiap pesanan dapat berisi banyak jenis barang, serta satu jenis barang bisa dimasukkan dalam berbagai pesanan.



Kode yang kita gunakan:

class Pesanan extends ActiveRecord
{
public function getBarangs()
{
return $this->hasMany(Barang::className(), ['id' => 'barang_id'])
->viaTable('barang_pesanan', ['pesanan_id' => 'id']);
}
}


atau alternatifnya juga bisa dibuat seperti ini:

class Pesanan extends ActiveRecord
{
public function getPesananBarangs()
{
return $this->hasMany(PesananBarang::className(), ['pesanan_id' => 'id']);

}

public function getBarangs()
{
return $this->hasMany(Barang::className(), ['id' => 'barang_id'])
->via('PesananBarangs');
}
}


Demikian, semoga bermanfaat dan selamat belajar!



Referensi:
http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#relational-data





Demikianlah Artikel Memahami Relasi Tabel pada Yii2

Sekianlah artikel Memahami Relasi Tabel pada Yii2 kali ini, mudah-mudahan bisa memberi manfaat untuk anda semua. baiklah, sampai jumpa di postingan artikel lainnya.

Anda sekarang membaca artikel Memahami Relasi Tabel pada Yii2 dengan alamat link https://dev-create.blogspot.com/2017/06/memahami-relasi-tabel-pada-yii2.html