Ларавелдин күчтүү жактарынын бири - анын көрктүү синтаксиси. Эгерде сизде Ларавелде көптөгөн моделдер жана мамилелер бар болсо (маалымат базасындагы көптөгөн таблицалардан улам), траверсинг көбүнчө анча кооз эмес код менен аякташы мүмкүн. Убакыттын өтүшү менен, үч кичинекей кеңейтүүлөр мен үчүн төмөндө кыскача тааныштыргым келген мен үчүн далилденди. Биз жөн гана кээ бир мурастарды, сыйкырдуу ыкмаларды жана бажы жыйнактарын колдонобуз.
Алгач \ ConvenienceModel.php тиркемесинин астында жаңы моделди түзөбүз:
b45e29b9125c2ab565b5526442437686
Андан кийин биз бардык ConvenienceModel үлгүлөрүнөн мураска калууга мүмкүнчүлүк беребиз:
b45e29b9125c2ab565b5526442437686
Өз функцияларыңызды мамилелер менен аралаштырыңыз
Эгер сиз байланышкан моделдерди алгыңыз келсе, анда аларды чакыруу үчүн стандарттуу синтаксисти колдоносуз:
b45e29b9125c2ab565b5526442437686
Эгерде сиз эми өзүңүздүн бизнес логикаңызды кошсоңуз, анда (төмөнкү) төө төш белгисин колдонгуңуз келет:
b45e29b9125c2ab565b5526442437686
Эки варианттын тең синтаксисин стандартташтырууну каалайбыз. Бул үчүн ConvenienceModelге сыйкырдуу __call ыкмасын кошобуз:
b45e29b9125c2ab565b5526442437686
Жогоруда келтирилген мисалда бул чалуу дагы мүмкүн:
b45e29b9125c2ab565b5526442437686
Бош нерселерди текшериңиз
Эгерде сиз өлкөнүн атын адамдын дарегине чыгаргыңыз келсе, анда төмөнкү кодду көп көрө аласыз:
b45e29b9125c2ab565b5526442437686
Мунун алдын алуу үчүн, биз кирет stringhelper китепканасын жана кайра үлгү табылган жок болсо, бош бош класска атайын объект:
b45e29b9125c2ab565b5526442437686
Бул дагы чалууну ийгиликтүү кылат (бул мисалда, бир нерсе табылса, анда өлкөнүн аталышы чыгат, калган учурларда бош сап).
b45e29b9125c2ab565b5526442437686
Эгер биз дагы ID 42 колдонуучу жок болуп калышы мүмкүн деген маселени чагылдыргыбыз келсе, анда биз бул үчүн чакан жардамчы функциясын курабыз:
b45e29b9125c2ab565b5526442437686
Колдонуучу такыр жок болсо дагы, кийинки чакыруу бош сапты берет:
b45e29b9125c2ab565b5526442437686
N: m мамилелерин ыңгайлуу кесип өтүү
Акыр-аягы, биз төмөнкү кодду жөнөкөйлөтүү келет:
b45e29b9125c2ab565b5526442437686
Бул үчүн биз бажы жыйнактарынын мүмкүнчүлүгүн колдонобуз. Алгач ыңгайлуулук моделин кеңейтип жатабыз:
b45e29b9125c2ab565b5526442437686
Андан кийин биз жыйнактарда белгисиз милдеттерин чакырып жыйноо бардык заттар үчүн милдетти аткаруусун камсыз билэ колдонмосун \ -Жок, \ ConvenienceCollection.php түзүү:
b45e29b9125c2ab565b5526442437686
Ошентип, биз төмөнкү кодду колдонуп, адамдын бардык ата-энелеринин бардык даректериндеги бардык өлкөлөрдүн аталыштарын чыгара алабыз:
b45e29b9125c2ab565b5526442437686
Бирок төмөнкүдөй чалуулар дагы мүмкүн:
b45e29b9125c2ab565b5526442437686
Бир нече тилке боюнча иреттөө
Төмөнкү чакыруу жайгашкан жери боюнча гана иреттелет, бирок ал сиз каалаган эмес окшойт:
b45e29b9125c2ab565b5526442437686
ConvenienceCollection'ту бир нече тилке боюнча сорттоону иштетүү үчүн кеңейтип жатабыз:
b45e29b9125c2ab565b5526442437686
Муну менен коллекцияны бир нече тилке боюнча иреттей алабыз:
b45e29b9125c2ab565b5526442437686
Стандарттык иреттөө
ConvenienceCollection программасын дагы бир жардамчы функция менен кеңейтип жатабыз:
b45e29b9125c2ab565b5526442437686
Эми сиз ар бир моделге өзүнчө стандарттуу сорттоо функциясын бере аласыз:
b45e29b9125c2ab565b5526442437686
Муну менен биз коллекцияны сорттой алабыз:
b45e29b9125c2ab565b5526442437686
Объекттин аталыштары
Ар бир модель getLabel ыкмасын ишке ашырат (getName моделге жараша өзгөрөт):
b45e29b9125c2ab565b5526442437686
Муну менен сиз тез жана оңой эле объектинин атын чыгара аласыз. Андан кийин sortByLabel жардамчы ыкмасын ConvenienceCollection программасында колдонсоңуз болот:
b45e29b9125c2ab565b5526442437686
Бош натыйжалар
Эгерде аралык кадам бош болсо, анда Ларавелдин функциялары адатта нөлгө айланат. Ошондуктан getFirst () жана getLast () киргизип, төмөнкү чакыруу ар дайым ийгиликтүү болот:
b45e29b9125c2ab565b5526442437686
Муну менен, __x тааныган __empty_helperди кайтарып беребиз:
b45e29b9125c2ab565b5526442437686