Hallo, selamat pagi, sesi kali ini akan membawakan mengenai mysql laravel hitung jumlah Interaksi Dengan Database simak selengkapnya
Pada tulisan sebelumnya kita telah bersama-sama membuat jerambah web pertama
dengan laravel. Satu buah jerambah sederhana yang hanya menampilkan sebuah
tulisan “halo, bro”. Pada kenyataannya, ketika kita membangun sebentuk website,
data yang ditampilkan bukan hanya sekedar tulisan “halo, bro”, tetapi merupakan
data real yang berakar dari database. Oleh karena itu, ala tulisan ini kita
akan bersama-sama berguru aturan apa} caranya berhubung dengan database
menggunakan laravel. Untuk tutorial kali ini kita akan memakai sebentuk table bernama Tidak harus khawatir andaikan Anda merasa layak malas buat membuat tablenya sendiri
karena di bawah ini telah script sql-nya (ups, mysql only akur :D): Setelah table siap, langkah selanjutnya ialah mencocokkan konfigurasi untuk
melakukan koneksi ke database. File konfigurasi database bisa terdapat di
Laravel adaptasi 4 mendukung empat bentuk database: sqlite, mysql, postgresql, dan
SQL Server. Sesuai database yang Anda gunakan (yang abdi benar-benar percaya 99% adalah
MySQL), silakan edit nama database, username, dengan password. Konfigurasi abdi terlihat bagai di bawah ini: Ok, setelah database siap, saatnya kita beraksi. Pada prinsipnya laravel
menyediakan tiga buah cara buat berhubung denga basis data: Raw Query Query Builder Eloquent ORM Cara pertama tak dianjurkan, cara kedua boleh dilakukan, dengan cara ketiga
adalah yang paling umum digunakan. Kecuali Anda telah layak sakti dengan memiliki alasan kuat, acap gunakan cara yang ketiga. Kenapa? Hmm, saat ini beriktikad sahaja dulu.
Nanti kita bahas lebih lanjut di tulisan lainnya ;) Untuk melakukan query ke database, kita bisa memakai class Yang harus diperhatikan adalah, kita bisa melakukan binding parameter dengan memakai karakter ‘?’ pada query, kemudian kita tambahkan parameter kedua berupa array yang berisi value yang embuh kita passing. Ingat, antrean penggantian yang dilakukan sesuai dengan antrean karakter ‘?’. Jadi, karakter ‘?’ pertama akan digantikan dengan elemen array pertama, dengan seterusnya. Jika Anda pernah memakai Code Igniter sebelumnya, selamat, absolut Anda amat familiar dengan query builder (kalau di CI biasa disebut dengan Active Record). Query builder menyediakan cara yang lebih nyaman dengan konsisten buat melakukan query ke database. Lebih nyaman karena kode jadi lebih eco ditulis dengan dibaca, lebih konsisten karena Anda tak harus membahayakan antagonisme native query yang mungkin siap antara bentuk database yang satu dengan yang lain. Sekali Anda memakai query builder, maka query dijamin berjalan dengan apik di sarwa database yang didukung oleh laravel. Masih memakai sampel bagan Jika Anda perhatikan ala dobel cara sebelumnya, kembalian dari query yang dihasilkan apik oleh Kedua query di atas saling menghasilkan array yang elemennya bertipe stdClass (stdClass ialah aras bawaan PHP, biasanya digunakan buat membuat obyek sederhana yang hanya berisi setter dengan getter). Bagaimana andaikan kita embuh mengganti Nah, itulah salah satu peran ORM (Object Relational Mapper), yaitu memetakan hasil query dari database ke pada bentuk obyek yang telah kita definisikan sebelumnya. Bentuk yang telah kita definisikan sebelumnya ini biasa disebut dengan Model (M dari MVC). Mengambil sampel bagan post di atas, kita embuh biar hasil query dari bagan tersebut dipetakan jadi obyek acuan Post. Untuk itu kita harus definisikan dulu acuan Post. Buat sebentuk file aktual Setiap acuan yang kita bikin harus meng-extends aras Selanjutnya kita bisa melakukan berbagai ala query melalui ORM. Mendapatkan sarwa row: Mendapatkan satu row berdasar primary key: Kode di atas akan menghasilkan: Coba perhatikan, sekarang kita telah membaca Buka balik file app/models/Post.php, arkian modifikasi bagai berikut ini: Maka kita bisa mendatangkan ciri dengan fungsi tersebut bagai berikut ini: Semua fungsi yang tersedia di Untuk menambahkan record aktual ke database, caranya layak sederhana: Mari kita lihat contohnya: Jalankan kode di atas, dengan tadaaaa…. error kan? Secara default, Eloquent memerlukan dobel kolom tambahan buat saban tabel, yaitu Jalankan balik kode di atas, dengan cek database Anda:
Record aktual telah ditambahkan, lengkap dengan berita tentang kapan record tersebut di-insert. Untuk melakukan update di row tertentu, caranya jua amat sederhana: Cek balik table post Anda, perhatikan record dengan id = 1, apakah title-nya berubah? Apakah kolom updated_at telah terisi secara otomatis? Sedangkan buat basmi row tertentu, Yup, sekarang kita telah bisa melakukan query ke database memanfaatkan fitur-fitur yang telah disediakan oleh laravel. Dari ketiga cara tersebut, memakai ORM ialah cara yang paling direkomendasikan karena lebih fleksibel, kode lebih terorganisir dengan mudah dipahami, dengan tentunya lebih OOP. Tetapi terkadang siap kasus dimana ORM memiliki kelemahan, lebih-lebih pada segi performansi, yaitu ketika berhubungan dengan data yang amat banyak (jutaan row). Untuk kasus tersebut, Anda acap memiliki pilihan buat memakai dobel metode lainnya. Kalau abdi pribadi, acap gunakan ORM, batas satu saat aplikasi terasa lambat, aktual dilakukan optimasi :D.Persiapkan database
post
dengan
struktur sebagai berikut:CREATE TABLE `post` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`content` text,
`comment_count` int(11) NOT NULL DEFAULT '0',
`status` enum('draft','publish') NOT NULL DEFAULT 'draft',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
INSERT INTO `post` (`id`, `title`, `content`, `comment_count`, `status`)
VALUES
(1, 'Halo bro', 'content 1', 2, 'publish'),
(2, 'Basic Routing', 'content 2', 10, 'publish'),
(3, 'Nested Layout Menggunakan Blade', 'content 3', 1, 'draft');
Konfigurasi database
app/config/database.php
....
'connections' => array(
...
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'laravel-sample',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
...
Interaksi ke database
Raw Query
DB
yang telah tersedia. Sebagai contoh, memakai table post
di atas, kita bisa melakukan query sebagai berikut:// select
$posts = DB::select('select * from post');
foreach ($posts as $post)
echo $post->title . '<br>';
// select query dengan parameter
$posts = DB::select('select * from post where kapasitas = ?', array('publish'));
foreach ($posts as $post)
echo $post->title . '<br>';
// insert
DB::update('insert into post(title, content) values (?, ?)', array('Postingan baru', 'Konten aktual bro'));
// update
DB::update('update post set content = ? where id = ?', array('Update postingan baru', 4));
// delete
$deletedCount = DB::delete('delete from post where comment_count = 0');
echo $deletedCount;
// general statement
DB::statement('alter table post add column created datetime null');
// transaction
DB::transaction(function()
...query 1
...query 2
);
Query Builder
post
di atas, kita bisa melakukan berbagai ala query sebagai berikut:// select multiple row
$posts = DB::table('post')->get();
foreach ($posts as $post)
echo $post->title . '<br>';
// select satu row
$post = DB::table('post')->where('id', 1)->first();
// select kolom tertentu
$post = DB::table('post')->select('id', 'title')->where('id', 1)->first();
// ekivalen dengan query berikut
//$post = DB::table('post')->select(array('id', 'title'))->where('id', 1)->first();
// select satu kolom
$lastArticleTitle = DB::table('post')->orderBy('id', 'desc')->pluck('title');
echo 'Judul artikel terakhir: ' . $lastArticleTitle . '<br>';
$query = DB::table('post')->addSelect('id');
$query->addSelect('title');
$query->where('status', 'publish');
$query->where('id', '>', 1);
$posts = $query->get();
$posts = DB::table('post')->skip(1)->take(1)->get();
Eloquent ORM
Raw Query
atau Query Builder
ialah saling StdClass Object
.
Perhatikan balik sampel contoh berikut:// raw query
$posts = DB::select('select * from post');
// query builder
$posts = DB::table('post')->get();
Array
(
[0] => stdClass Object
(
[id] => 1
[title] => Halo bro
[content] => content 1
[comment_count] => 2
[status] => publish
[created] =>
)
[1] => stdClass Object
(
[id] => 2
[title] => Basic Routing
[content] => content 2
[comment_count] => 10
[status] => publish
[created] =>
)
[2] => stdClass Object
(
[id] => 3
[title] => Nested Layout Menggunakan Blade
[content] => content 3
[comment_count] => 1
[status] => draft
[created] =>
)
)
stdClass
dengan Kelas
buatan sendiri, apakah bisa?app/models/Post.php
:<?php
class Post extends Eloquent
protected $table = 'post';
Eloquent
bawaan laravel. Eloquent
sendiri artinya kurang lebih ‘elok nian’ :P$singlePost = Post::find(1);
echo '<pre>';
print_r($singlePost);
echo '</pre>';
Post Object
(
[table:protected] => post
[connection:protected] =>
[primaryKey:protected] => id
[perPage:protected] => 15
[incrementing] => 1
[timestamps] => 1
[attributes:protected] => Array
(
[id] => 1
[title] => Halo bro
[content] => content 1
[comment_count] => 2
[status] => publish
[created] =>
)
Post Object
, bukan lagi stdClass Object
bagai sebelumnya. Itu berarti, andaikan kita menambahkan ciri atau fungsi apapun di aras Post yang telah kita bikin, maka ciri dengan fungsi tersebut jua bisa dipanggil oleh obyek-obyek yang dihasilkan dari hasil query.<?php
class Post extends Eloquent
protected $table = 'post';
public $newAttribute = 'new attribute';
public function url()
return 'http:://www.domain.com/post/' . $this->id;
$singlePost = Post::find(1);
echo $singlePost->newAttribute; // output: 'new attribute'
echo '<br>';
echo $singlePost->url(); // output: 'http://www.domain.com/post/1'
Query Builder
bisa dipakai buat melakukan query dengan ORM
.$posts = Post::where('status', 'publish')->get();
Insert, Update, Delete
save()
$newPost = new Post;
$newPost->title = 'Yeah, Laravel engku nge-jazz';
$newPost->content = 'Pharetra Elit Condimentum Ligula Sem';
$newPost->status = 'draft';
$newPost->save();
Exception
SQLSTATE[42S22]: Column titinada found: 1054 Unknown column 'updated_at' in 'field list' (SQL: insert into `post` (`title`, `content`, `status`, `updated_at`, `created_at`) values (?, ?, ?, ?, ?)) (Bindings: array ( 0 => 'Yeah, Laravel engku nge-jazz', 1 => 'Pharetra Elit Condimentum Ligula Sem', 2 => 'draft', 3 => '2013-10-12 08:03:01', 4 => '2013-10-12 08:03:01', ))
updated_at
dengan created_at
, yang akan digunakan buat mencatat waktu insert dengan waktu update secara otomatis. Untuk itu, tambahkan kedua kolom tersebut di bagan post
Anda, keduanya bertipe datetime
.$post = Post::find(1);
$post->title = 'New Title';
$post->save();
Eloquent
telah menyediakan fungsi delete()
:// basmi satu row dengan obyek
$post = Post::find(2);
$post->delete();
// basmi banyak row sekaligus
Post::where('status', 'draft')->delete();
Kesimpulan
oke penjelasan tentang Interaksi Dengan Database semoga tulisan ini menambah wawasan salam
Artikel ini diposting pada label , tanggal 25-08-2019, di kutip dari https://id-laravel.com/post/interaksi-dengan-database
Post a Comment
Post a Comment