Laravel'in güçlü yönlerinden biri, zarif sözdizimi. Laravel'de çok sayıda modeliniz ve ilişkiniz varsa (veritabanındaki çok sayıda tablo nedeniyle), çapraz geçiş genellikle daha az zarif kodla sonuçlanabilir. Zamanla, aşağıda kısaca tanıtacağım üç küçük uzantı benim için kendilerini kanıtladı. Sadece bazı miras, sihirli yöntemler ve özel koleksiyonlar kullanıyoruz.
Önce app \ ConvenienceModel.php altında yeni bir model oluşturuyoruz.:
b45e29b9125c2ab565b5526442437686
Sonra tüm modellerin yeni ConvenienceModel'imizden miras almasına izin veriyoruz:
b45e29b9125c2ab565b5526442437686
Kendi işlevlerinizi ilişkilerle karıştırın
Bağlı modeller almak istiyorsanız, bunları aramak için standart sözdizimini kullanırsınız:
b45e29b9125c2ab565b5526442437686
Şimdi kendi iş mantığınızı eklerseniz, (alt) deve durumu gösterimini kullanmayı seversiniz.:
b45e29b9125c2ab565b5526442437686
Her iki varyantın sözdizimini standartlaştırmak istiyoruz. Bunu yapmak için, ConvenienceModel'e __call sihirli yöntemini ekliyoruz .:
b45e29b9125c2ab565b5526442437686
Bu çağrı bu nedenle yukarıdaki örnekte de mümkündür:
b45e29b9125c2ab565b5526442437686
Boş nesneleri kontrol edin
Bir kişinin adresine karşılık gelen ülke adını yazdırmak istiyorsanız, genellikle aşağıdaki kodu görürsünüz.:
b45e29b9125c2ab565b5526442437686
Bunu önlemek için stringhelper kütüphanesini dahil ediyoruz ve bir model bulunamazsa `empty` adlı boş bir sınıfın özel bir nesnesini döndürüyoruz.:
b45e29b9125c2ab565b5526442437686
Bu da çağrının başarılı olmasını sağlar (bu örnekte, bir şey bulunursa ülkenin adı yazdırılır; diğer tüm durumlarda boş bir dize görüntülenir).
b45e29b9125c2ab565b5526442437686
42 numaralı kullanıcının var olamayabileceği durumunu da ele almak istersek, bunun için küçük bir yardımcı fonksiyon da oluşturacağız.:
b45e29b9125c2ab565b5526442437686
Bu nedenle aşağıdaki çağrı, kullanıcı hiç mevcut olmasa bile boş bir dize sunar:
b45e29b9125c2ab565b5526442437686
N: m ilişkilerini rahatça çaprazlayın
Son olarak, aşağıdaki kodu basitleştirmek istiyoruz:
b45e29b9125c2ab565b5526442437686
Bunun için özel koleksiyon olanaklarını kullanıyoruz. İlk olarak kolaylık modelini genişletiyoruz:
b45e29b9125c2ab565b5526442437686
Ardından, koleksiyonlarda bilinmeyen fonksiyonlar çağrıldığında, fonksiyonun koleksiyondaki tüm öğeler için yürütülmesini sağlayan app\Helpers\ConvenienceCollection.php dosyasını oluşturuyoruz.:
b45e29b9125c2ab565b5526442437686
Bu nedenle, kişinin tüm ebeveynlerinin tüm adreslerinin tüm ülkelerinin tüm adlarını çıkarmak için aşağıdaki kodu kullanabiliriz:
b45e29b9125c2ab565b5526442437686
Ancak aşağıdaki gibi çağrılar da mümkündür:
b45e29b9125c2ab565b5526442437686
Birden çok sütuna göre sırala
Aşağıdaki komut yalnızca konuma göre sıralama yapar, ancak bu muhtemelen amaçlanan sonuç değildi.:
b45e29b9125c2ab565b5526442437686
Birkaç sütuna göre sıralamayı etkinleştirmek için ConvenienceCollection'ımızı genişletiyoruz:
b45e29b9125c2ab565b5526442437686
Bununla, koleksiyonu birkaç sütuna göre sıralayabiliriz.:
b45e29b9125c2ab565b5526442437686
Standart sıralama
ConvenienceCollection'ı başka bir yardımcı fonksiyonla genişletiyoruz:
b45e29b9125c2ab565b5526442437686
Artık her modele ayrı bir standart sıralama işlevi verebilirsiniz:
b45e29b9125c2ab565b5526442437686
Böylece bir koleksiyonu şu şekilde sıralayabiliriz::
b45e29b9125c2ab565b5526442437686
Nesne isimleri
Her model getLabel yöntemini uygular (getName, modele bağlı olarak değişir):
b45e29b9125c2ab565b5526442437686
Bununla bir nesnenin adını hızlı ve kolay bir şekilde görüntüleyebilirsiniz. Daha sonra, ConvenienceCollection öğesinde sortByLabel yardımcı yöntemini uygulayabilirsiniz.:
b45e29b9125c2ab565b5526442437686
Boş sonuçlar
Bir ara adım boşsa, Laravel birinci () ve son () fonksiyonları genellikle sıfır döndürür. Bu nedenle, aşağıdaki çağrının her zaman başarılı olması için getFirst () ve getLast () işlevlerini tanıtıyoruz.:
b45e29b9125c2ab565b5526442437686
Bununla, __x'in tanıdığı bir __empty_helper'ı geri gönderiyoruz:
b45e29b9125c2ab565b5526442437686