考えました。
Laravel Meetup Tokyo Vol.12٢ా͋ͻΔ (@strtyuu)&MPRVFOUʹผΕΛࠂ͛ΔλΠϛϯάʹ͍ͭͯߟ͑ͨ
View Slide
ࣗݾհ٢ా͋ͻΔ!TUSUZVVτΡΪϟολʔגࣜձࣾ4PGUXBSF&OHJOFFS
$VSBUJPO$PNNVOJDBUJPO1MBUGPSNIUUQTUPHFUUFSDPN·ͱΊΑ͏ɺ͋ͭ·Ζ͏
&MPRVFOUActiveRecordDomainModelORM× ×
03.ɾ%#͔Βऔಘͨ͠ΛΦϒδΣΫτʹม͢Δͷ
"DUJWF3FDPSEɾςʔϒϧɾϏϡʔͷεΩʔϚͱີ݁߹ͨ͠ϓϩύςΟɾϨίʔυΛΠϯελϯεԽͯ͠ৼΔ͍Λ࣋ͨͤΔɾυϝΠϯϞσϧͷҰछɾ%#ΞΫηεͷΧϓηϧԽ
%PNBJO.PEFMɾυϝΠϯʹଘࡏ͢Δ֓೦ΛΫϥεԽͨ͠ͷɾυϝΠϯʹযΛͯͨɺ७ਮͳϩδοΫͷू·Γ
&MPRVFOUͷྑ͍ॴɾߴػೳʂɾָʹ։ൃ͕Ͱ͖ΔʂɾศརͳϥΠϒϥϦͨ͘͞Μʂ
&MPRVFOUͷਏͦ͏ͳॴɾΫΤϦΛ࠷దԽ͍ͨ͠ͱ͖ɾ3FQPTJUPSZύλʔϯͱͷ૬ੑ͕ඍົʁɾϑΝοτʹͳΓ͕ͪɾϞσϧ͕ςʔϒϧߏͱҰக͠ͳ͍ͱ͖
ΫΤϦͷ࠷దԽ
4&-&$5'30.AQPTUTA8)&3&AQPTUTAAJEA -*.*54&-&$5'30.ADPNNFOUTA8)&3&ADPNNFOUTAAQPTU@JEA "/%ADPNNFOUTAAQPTU@JEA*4/05/6--
4&-&$5'30.AVTFSTA8)&3&&9*454 4&-&$5'30.AQPTUTA8)&3&AVTFSTAAJEAAQPTUTAAVTFS@JEA
ɾ͍ΫΤϦ͕ు͔Εͯਏ͍ಀ͛ಓ͕͋ΔͷͰɺผΕΛࠂ͛Δཧ༝ʹͳΓʹ͍͘ʁɾ͕ڐ༰ൣғͰ͋Εແࢹ͢Δ͜ͱɾΫϦςΟΧϧͳॴ͚ͩී௨ʹ42-Λॻ͍ͯޡຐԽ͢ͱ͔ग़དྷΔ
Repositoryύλʔϯͱͷ૬ੑ͕ඍົʁ
3FQPTJUPSZύλʔϯɾӬଓԽઌͱͷΓͱΓΛӅณ͢Δ
͑ͬ
ɾ&MPRVFOUͰ%#ΞΫηε͕ग़དྷΔ͍ͤͰɺɹ3FQPTJUPSZͷ֎ͰΫΤϦΛॻ͍ͯ͠·͏&MPRVFOUʹผΕΛࠂ͛ΔΑΓɺίʔυϨϏϡʔͱ͔ͰೝࣝΛ߹Θͤͨํ͕ྑͦ͞͏ɾ&MPRVFOUͷ͍ͤͱ͍͏͔ɺ࣮ऀͷ
ϑΝοτʹͳΓ͕ͪ
ΈΜͳ͕&MPRVFOUʹΒͤͯͦ͏ͳ͜ͱɾ%#ͱͷΓͱΓɾଞͷ&MPRVFOUͱͷϦϨʔγϣϯɾυϝΠϯϞσϧͱͯ͠ͷৼΔ͍
&MPRVFOUΛϑϧ׆༻ͯ͠Δਓ͕ͬͯͦ͏ͳ͜ͱɾϓϩύςΟͷόϦσʔγϣϯɾϓϨθϯςʔγϣϯϩδοΫ
※Laravel Boilerplate -https://github.com/rappasoft/laravel-5-boilerplate/blob/master/app/Models/Auth/Traits/Attribute/UserAttribute.phpϓϩύςΟͷόϦσʔγϣϯ
※Laravel Boilerplate -https://github.com/rappasoft/laravel-5-boilerplate/blob/master/app/Models/Auth/Traits/Attribute/UserAttribute.phpϓϨθϯςʔγϣϯϩδοΫ
ɾ&MPRVFOU͕ศར͗͢ΔͨΊʹɺ͋Ε͜Ε&MPRVFOUʹ࣮͢Δ͜ͱͰ'BUʹͳͬͯ͠·͏͜ͱ͕͋Δ&MPRVFOUʹผΕΛࠂ͛ͳͯ͘ɺ͝ͱʹΫϥεΛ͚Εই༊͑Δͣɾ&MPRVFOUͷ͍ͤͱ͍͏͔ɺΫϥεઃܭͷ
ςʔϒϧߏͱҰக͠ͳ͍Ϟσϧ
" # $ % &ςʔϒϧA ςʔϒϧBͤͳύλʔϯModel A Model B
" # $ % &ςʔϒϧA ςʔϒϧBਏ͘ͳΔύλʔϯModel A× ×
ͳͥਏ͘ͳΔͷ͔ɾ"DUJWF3FDPSEςʔϒϧɾϏϡʔͱର͕લఏͷσβΠϯύλʔϯɾKPJOલఏͷϝιου͕ଘࡏͨ͠Γ͢Δͱਏ͞ͷ࢝·ΓɾۀϩδοΫςʔϒϧߏͱແؔʹมԽ͍ͯ͘͠ɾΦϒδΣΫτϑΝʔετͳઃܭͱ૬ੑ͕ѱ͍ɾ.Z42-ͷ7*&8*OEFYͷͱ͔͋ΔͷͰʜ
ɾ࠷େͷϝϦοτͰ͋Δ%#ͱີ݁߹ͳ෦ɺಉ࣌ʹ࠷େͷσϝϦοτʹͳΓ͑Δ७ਮͳυϝΠϯϞσϧ͕ඞཁʹͳͬͨΒɺ&MPRVFOUͱ͓ผΕ͢Δ߹ਤͳͷ͔͠Εͳ͍ ٽɾ͜Ε&MPRVFOUͷຊ࣭తͳ෦ͱͷ૬ੑͷѱ͞
·ͱΊɾ͍͍ͩͨͷਏ͞ɺ࣮ͷͰղܾͰ͖Δͱࢥ͏ɾ࣏҆ͷѱ͍ίʔυΛॻ͔ΕͨΒɺͪΌΜͱϨϏϡʔͰ͍ͯ͜͠͏ɾΫΤϦͷ࠷దԽ͕͖͔ͭͬͨΒ͓ผΕʹͳΔ͔͠Εͳ͍͠ɺ·͊ͳΜͱ͔ͳΔ͔͠Εͳ͍ɾ७ਮͳυϝΠϯϞσϧ͕ཉ͘͠ͳͬͨΒɺଟ͓ผΕ͠ͳ͖Ό͍͚ͳ͍
ࢀߟࢿྉɾπΠολʔϥϯυͷΈͳ͞ΜɹIUUQTUPHFUUFSDPNMJɾΤϯλʔϓϥΠζΞϓϦέʔγϣϯΞʔΩςΫνϟύλʔϯɹIUUQTXXXBNB[PODPKQEQɾ/&5ͷΤϯλʔϓϥΠζΞϓϦέʔγϣϯΞʔΩςΫνϟɹIUUQTXXXBNB[PODPKQEQ#;2;+/&ɾ-BSBWFM#PJMFSQMBUFɹIUUQTHJUIVCDPNSBQQBTPGUMBSBWFMCPJMFSQMBUF