KKUT Docs

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.

Karakter seti ve 4 baytlık karakterler

Bağlantı utf8mb4 değilse (ör. 3 baytlık utf8) MySQL, emoji gibi 4 baytlık karakterleri ???? olarak kaydeder. Sorgu oluşturucu sorguya gömdüğü değerlerde (where, set, insert değerleri) bu durumda 4 baytlık karakterleri HTML sayısal varlığına (örneğin 😀) çevirir. İçerik HTML olarak basıldığında aynı karakter görünür. charset değeri utf8mb4 ise değer olduğu gibi saklanır. Hazırlanmış sorgularla bağlanan parametreler bu dönüşümden geçmez, sürücüye aynen gider. Emoji ve benzeri karakterleri gerçek karakter olarak saklamak için bağlantıyı ve tabloyu utf8mb4 yapın.

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.
KUT Framework 1.0Katmanlı Uygulama Tabanı

Kur. Uyarla. Türet.