Bir projeye katıldınız. Kırk tablo, yarısı belgelenmemiş, ve bir posts tablosu, daha önce hiç duymadığınız üç başka tablonun bir şekilde ilişkili olduğu bir durum. Nereden başlamalısınız?
php artisan db komutu ile interaktif bir shell’e ulaşabilirsiniz, buradan hangi veritabanınız varsa o dilde devam edersiniz: SQLite için .schema, MySQL için DESCRIBE, Postgres için \d. Laravel’in db:show ve db:table komutları, tablolarınıza veya bir tablonun sütunlarına, indekslerine ve yabancı anahtarlarına dair bir genel bakış sağlar. Ancak yine de bu bilgiler bir seferde yalnızca bir tablo için metin olarak verilir. Tüm şemadaki tabloların nasıl birbirine bağlandığını gösteren bir şey yok. Sonuç olarak, ya bir DB istemcisi açıp SSH tüneli üzerinden erişim sağlıyor ya da akla dayalı olarak bir diyagram çizmeye çalışıyorsunuz ki bu, güvenilir olmayan bir yaklaşımdır.
Ve bu, shell erişiminiz olduğunda bile kolay bir durumdur. Gerçek şemanın, dağıtım veya üretim ortamlarında, Migrations’tan çoktan saptığı yerlerde ihtiyacınız olduğu zaman shell’e erişim erişiminiz genellikle yoktur. Bazı organizasyonlar, uyum nedeniyle SSH’yi tamamen engelleyebilir. Bu durumda, Artisan komutlarını çalıştırmak için AWS Systems Manager kullanarak değiştirdiğim durumu okuyabilirsiniz. Yine de, bir Run Command oturumu ile elinize geçse bile, bu size bir shell kazandırır, bir diyagram değil.
Bu yüzden Truss adlı bir araç geliştirdim.
Ne yapar?
Ne yapar?
Truss, Laravel için canlı bir veritabanı yapı görüntüleyicisidir. Gerçek şemanızı, Migration dosyalarınızı değil, tarar ve uygulamanız içinde kaydırılabilir, yakınlaştırılabilir bir ER diyagramı olarak görüntüler.
- Canlı ER diyagramı: Her tablonun nasıl bağlandığını gösterir ve Mermaid kullanarak çizilir.
- Odak modu: Bir tabloya tıklarsanız, onu ve yabancı anahtar komşularını izole eder, ortalar ve vurgular, böylece birine odaklanarak anlamaya çalışırken kırk tabloya bakmak zorunda kalmazsınız.
- Tablo adlarına göre filtreleme ve yerel sütun türlerini Laravel tarzı etiketlerle karşılaştırmak için anahtarları değiştirme.
- Harita tarzı pan ve zoom, otomatik olarak sığdırma ile.
- Yalnızca yapı, her zaman. Truss, tabloları, sütunları, anahtarları ve indeksleri okur. Tek bir satır sorgulamaz, bu da onu gerçekten önemli olan bir yerde çalıştırabilmenin tam manasıdır.
- Kendine yeterli: Mermaid ve yazı tipleri paket içinde sunulur, bu nedenle çevrimdışı ve sıkı CSP altında çalışır. Hiçbir CDN, ev sahibi yok.
- Önbellekli ve otomatik: Anlık görüntü, Migrations’tan sonra yeniden inşa edilir, bu nedenle diyagram asla eski olmaz.
- Tüm diyagramı dışa aktarın: PNG veya SVG formatında, mevcut filtrelere ve odaklanmalara tam olarak, tasarım belgesine veya bir PR açıklamasına eklemek üzere doğrudan alabilirsiniz. Her tablonun menüsünden JSON veya CSV formatında tablo bazında dışa aktarma da mevcuttur.
Bunu kurun, /truss adresine gidin, ve diyagramı görüntüleyin. Hiçbir yapılandırma, çalıştırılması gereken ayrı bir hizmet yok.
composer require albertoarena/laravel-truss
Varsayılan olarak yalnızca yerel olarak etkinleştirilmiştir. Staging veya üretim ortamlarında kullanmak için onu açıkça etkinleştirmeniz ve erişimi viewTruss yetkilendirme kapısı arkasında engellemeniz gerekir, böylece “üretimde çalıştırmak güvenli” ifadesi “üretimde geniş açık” anlamına gelmez.
Komut Satırından da
Komut Satırından da
db:show ve db:table size yaklaşır, ancak yine de yalnızca bir tablo için metin olarak verilir. php artisan truss:show aynı önbelleklenmiş, hariç tutma filtreli anlık görüntüyü bir tablo olarak çıktılar: her veritabanı için bir satır ile, sütun sayısı ve yabancı anahtar sayısıyla, şemanın tamamını tek seferde alırsınız.
php artisan truss:show # tüm şemayı bir tablo olarak, terminalinizde
php artisan truss:open # veya doğrudan diyagrama atlayın
php artisan truss:open varsayılan tarayıcınızda pano açar, rota ön ekine ve uygulama URL’sine saygı duyar. URL’yi yine de yazdırır, böylece tarayıcı olmayan bir başsız sunucuda yönlendirilmiş bir port üzerinden çalışır.
Her iki komut da truss: ad alanı altında bulunmaktadır, schema: yerine. Laravel’in kendi schema: ad alanını işgal eden bir paket, framework gelecekte kendi schema:show‘unu yayınlarsa çakışma riski taşır; bu da bu gönderinin başlığındaki espridir.
Hiçbir şey yüklemeden denemek
Hiçbir şey yüklemeden denemek
Projeye eklemeden önce denemek istiyorsanız, canlı bir demo mevcut, tarayıcınızda kurgusal bir şemaya karşı çalışıyor. Pan, yakınlaştır, filtrele, bir tabloya odaklan, yükleme gerek yok.
Nasıl performans gösterdi?
Nasıl performans gösterdi?
Truss’ı geliştirdikten sonra kendi birkaç Laravel projemde kullanmaya başladım. Uzun süre uğraşmadığım projelerde bile, hatırladığım bir şemaya en hızlı şekilde tekrar adapte olmamı sağladı. Odak modunda yabancı anahtarları arasında tıklamak, Migration dosyası isimlerinden ilişkileri yeniden inşa etmekten her zaman daha hızlı.
Başlayın
Başlayın
Dokümantasyon, kurulum, hızlı başlangıç ve yerel olmayan ortamlar için yetkilendirme hakkında daha fazla ayrıntı içerir. PHP 8.3+ ve Laravel 12+ gerektirir.
Her zamanki gibi geri bildirimleri bekliyorum.
Geliştirici kayda geçen bir hata: uzun içerikleri metin alanına yapıştırmak bazı durumlarda rasgele bir yerde bir yeni satırı silebilir ve iki satırı birleştirebilir — bu, daha önce iki kod bloğunda da yaşandı; gönderimden önce her bir kod bloğunu gözden geçirmenizde fayda var.
Kaynak: Orijinal Makale



