CakePHP - Bekerja dengan Database
Bekerja dengan database di CakePHP sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Perbarui, Hapus) di bab ini.
Selanjutnya, kita juga perlu mengkonfigurasi database kita di config/app_local.php file.
'Datasources' => [
'default' => [
'host' => 'localhost',
'username' => 'my_app',
'password' => 'secret',
'database' => 'my_app',
'url' => env('DATABASE_URL', null),
],
/*
* The test connection is used during the test suite.
*/
'test' => [
'host' => 'localhost',
//'port' => 'non_standard_port_number',
'username' => 'my_app',
'password' => 'secret',
'database' => 'test_myapp',
//'schema' => 'myapp',
],
],
Koneksi default memiliki detail berikut -
'host' => 'localhost',
'username' => 'my_app',
'password' => 'secret',
'database' => 'my_app',
Anda dapat mengubah detailnya, yaitu host, nama pengguna, kata sandi dan database sesuai pilihan Anda.
Setelah selesai, pastikan sudah diupdate di config / app_local.php di objek Datasources.
Sekarang, kita akan melanjutkan dengan detail di atas, buka database phpmyadmin atau mysql Anda dan buat pengguna my_app seperti yang ditunjukkan di bawah ini -
Berikan hak istimewa yang diperlukan dan simpan. Sekarang, kami memiliki detail database sesuai konfigurasi yang disebutkan di app_local.php. Saat Anda memeriksa halaman utama CakePHP, inilah yang harus Anda dapatkan -
Sekarang, kami akan membuat tabel pengguna berikut di database.
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
Sisipkan Record
Untuk memasukkan record ke dalam database, pertama-tama kita perlu mendapatkan tabel menggunakan TableRegistrykelas. Kami dapat mengambil contoh dari registri menggunakanget()metode. Ituget() metode akan mengambil nama tabel database sebagai argumen.
Instance baru ini digunakan untuk membuat entitas baru. Tetapkan nilai yang diperlukan dengan instance entitas baru. Sekarang kita harus memanggilsave() metode dengan TableRegistry instance kelas yang akan memasukkan record baru ke dalam database.
Contoh
Lakukan perubahan di config/routes.php file seperti yang ditunjukkan pada program berikut.
config/routes.php
<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
$builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
'httpOnly' => true,
]));
$builder->applyMiddleware('csrf');
//$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
$builder->connect('/users/add', ['controller' => 'Users', 'action' => 'add']);
$builder->fallbacks();
});
Membuat UsersController.php mengajukan di src/Controller/UsersController.php. Salin kode berikut di file pengontrol.
src/controller/UsersController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\ORM\TableRegistry;
use Cake\Datasource\ConnectionManager;
use Cake\Auth\DefaultPasswordHasher;
class UsersController extends AppController{
public function add(){
if($this->request->is('post')){
$username = $this->request->getData('username');
$hashPswdObj = new DefaultPasswordHasher;
$password = $hashPswdObj->hash($this->request->getData('password'));
$users_table = TableRegistry::get('users');
$users = $users_table->newEntity($this->request->getData());
$users->username = $username;
$users->password = $password;
$this->set('users', $users);
if($users_table->save($users))
echo "User is added.";
}
}
}
?>
Buat direktori Users di src/Template dan di bawah direktori itu buat a Viewfile bernama add.php. Salin kode berikut di file itu.
src/Template/Users/add.php
<?php
echo $this->Form->create(NULL,array('url'=>'/users/add'));
echo $this->Form->control('username');
echo $this->Form->control('password');
echo $this->Form->button('Submit');
echo $this->Form->end();
?>
Jalankan contoh di atas dengan mengunjungi URL berikut. http: // localhost / cakephp4 / users / add
Keluaran
Setelah dieksekusi, Anda akan menerima keluaran berikut.
Data akan disimpan dalam tabel pengguna seperti yang ditunjukkan di bawah ini -