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
Ülke adını bir kişinin adresine vermek isterseniz, genellikle aşağıdaki kodu görürsünüz:
b45e29b9125c2ab565b5526442437686
Bunu engellemek için, biz dahil stringhelper kütüphane ve dönüş model bulunmazsa boş boş sınıfın özel bir nesne:
b45e29b9125c2ab565b5526442437686
Bu aynı zamanda çağrıyı başarılı kılar (bu örnekte, bir şey bulunursa, ülkenin adı çıktı, diğer tüm durumlarda boş bir dizge).
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, koleksiyonlardaki bilinmeyen işlevlerin çağrılmasının koleksiyondaki tüm öğeler için işlevi yürütmesini sağlayan \ 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 çağrı yalnızca konuma göre sıralar, ancak muhtemelen istediğiniz şey bu 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