Bağlantı Ayarları
Veritabanı sürücüsünü, karakter setini ve bağlantı zaman aşımı değerlerini yapılandırın.
Veritabanı ayarları projenin Config/Database.php dosyasında tutulur. KUT projeleri farklı bağlantı profilleri tanımlayabilir.
MySQLi örneği
'database' =>
[
'driver' => 'mysqli',
'host' => 'localhost',
'database' => 'blog',
'user' => 'root',
'password' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'connectTimeout' => 5,
'readTimeout' => 15
]
Zaman aşımı ayarları
connectTimeout, bağlantı kurulurken; readTimeout ise sunucudan cevap beklerken uygulanır. Yanıt vermeyen bir veritabanının PHP işçisini süresiz tutmasını engeller.
Güvenlik: Canlı parola ve erişim bilgilerini public depoya yazmayın. Ortama göre yüklenen yerel yapılandırma veya güvenli ortam değişkeni kullanın.
totalRows() davranışı
totalRows(true) yeni bir COUNT sorgusu çalıştırmaz. Son derlenmiş sorguyu limitsiz olarak yeniden çalıştırır ve where durumunu sıfırlamaz.
// Yanlış: sorgu henüz derlenmedi, koşul yok sayılır
$total = Table::where('status', 'active')->totalRows(true);
// Doğru: önce çalıştır, sonra say
$request = Table::where('status', 'active');
$rows = $request->result();
$total = $request->totalRows(true);
// Satır içi kullanım da doğrudur
$total = Table::where('status', 'active')->get()->totalRows(true);
Neden önemli: Çalıştırılmamış bir istek üzerinde çağrıldığında yalnızca bayat bir sayı dönmez; biriken
where koşulu bağlantı üzerinde kalır ve sonraki sorgulara sızabilir. Bağlantı Singleton olduğundan derlenmiş sorgu istek boyunca paylaşılır.