CakePHP - Veritabanı ile Çalışma
CakePHP'de veritabanı ile çalışmak çok kolaydır. Bu bölümde CRUD (Oluşturma, Okuma, Güncelleme, Silme) işlemlerini anlayacağız.
Ayrıca, veritabanımızı şurada yapılandırmamız gerekiyor: 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',
],
],
Varsayılan bağlantı aşağıdaki ayrıntılara sahiptir -
'host' => 'localhost',
'username' => 'my_app',
'password' => 'secret',
'database' => 'my_app',
Ayrıntıları, yani ana bilgisayar, kullanıcı adı, şifre ve veri tabanını tercihinize göre değiştirebilirsiniz.
Bittiğinde, Datasources nesnesindeki config / app_local.php dosyasında güncellendiğinden emin olun.
Şimdi, yukarıdaki ayrıntılara devam edeceğiz, phpmyadmin veya mysql veritabanınıza gidip, aşağıda gösterildiği gibi kullanıcı my_app'i oluşturacağız -
Gerekli ayrıcalıkları verin ve kaydedin. Şimdi, app_local.php'de belirtilen yapılandırmaya göre veritabanı ayrıntılarına sahibiz. CakePHP ana sayfasını kontrol ettiğinizde, almanız gereken şey budur -
Şimdi, veritabanında aşağıdaki kullanıcı tablosunu oluşturacağız.
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
Kayıt Ekle
Veritabanına bir kayıt eklemek için, önce bir tabloyu kullanarak tutmamız gerekir. TableRegistrysınıf. Örneği kayıt defterinden şu şekilde getirebiliriz:get()yöntem. get() yöntem, veritabanı tablosunun adını bağımsız değişken olarak alır.
Bu yeni örnek, yeni varlık oluşturmak için kullanılır. Yeni varlık örneğiyle gerekli değerleri ayarlayın. Şimdi aramalıyızsave() yöntemi ile TableRegistry veritabanına yeni kayıt ekleyecek sınıfın örneği.
Misal
Değişiklik yapın config/routes.php dosya aşağıdaki programda gösterildiği gibi.
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();
});
Oluşturmak UsersController.php dosya src/Controller/UsersController.php. Aşağıdaki kodu denetleyici dosyasında kopyalayın.
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.";
}
}
}
?>
Bir dizin oluşturun Users -de src/Template ve bu dizinin altında bir Viewadd.php adlı dosya. Aşağıdaki kodu o dosyaya kopyalayın.
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();
?>
Aşağıdaki URL'yi ziyaret ederek yukarıdaki örneği yürütün. http: // localhost / cakephp4 / kullanıcılar / ekle
Çıktı
Yürütme üzerine aşağıdaki çıktıyı alacaksınız.
Veriler, aşağıda gösterildiği gibi kullanıcılar tablosuna kaydedilecektir -