Slide 1

Slide 1 text

UI"QSJM 4ZNGPOZ.FFUVQ,BOTBJ 0OMJOF CZ!XFC ҋΑΓੜ·Εࠞ͠ಱͷຐԦΛ෧ҹ ͠Α͏ ʙΫϩεϦϑΝϨϯεʹΑΔΧΦεͳ4ZNGPOZϓϩδΣΫτΛ͜Ε Ҏ্࡞Βͳ͍׆ಈɾ࣮ફใࠂʙ

Slide 2

Slide 2 text

ɾ!XFC ɾϑϦʔϥϯεʢ೥͙Β͍ʣˠΧϧςοτίϛϡχέʔγϣϯζʢ೥ʣ ɾ໊ݹ԰ ɾࣇͷ฼ ɾ೔ຊ4ZNGPOZϢʔβʔձ ɾ*—1)1

Slide 3

Slide 3 text

ɾӡ༻ܕ޿ࠂۀքΛϗϫΠτʹ͢Δ࢓૊ΈΛ࡞ͬͯ·͢ ɾ஥ؒืूதʂʢϑϧϦϞʔτɺύʔτλΠϜɺ΋ͪΖΜϑϧ λΠϜਖ਼ࣾһ΋׻ܴʣ ɾ4ZNGPOZ࢖ͬͯ·͢ʂ

Slide 4

Slide 4 text

ҋΑΓੜ·Εࠞ͠ಱͷຐԦ

Slide 5

Slide 5 text

ҋΑΓੜ·Εࠞ͠ಱͷຐԦ w 4ZNGPOZ͙Β͍Ͱ࡞Γ࢝Ίͯ4ZNGPOZ·ͰΞοϓσʔτ͖ͯͨ͠ϓϩ δΣΫτ w ͨ͘͞Μͷπʔϧ͕͋Δ w ֤πʔϧ͸#VOEMFͱͯ͠։ൃ͞Ε͍ͯΔ͕ɺجຊతʹͭͷHJUϨϙδτϦʹ શπʔϧͷόϯυϧ͕ฒΜͰ͍Δʢ4ZNGPOZ࣌୅ͷޙ൒ͷ"QQ#VOEMF୯Ұ ओٛ΍4ZNGPOZ ͰͷTSD"QQʹશͯΛஔ͘ελΠϧͱ͸ҟͳΔʣ

Slide 6

Slide 6 text

ҋΑΓੜ·Εࠞ͠ಱͷຐԦ Ͳ͏͍͏͜ͱ͕ى͖Δ͔ʁ w ػೳ"ɾػೳ#͕ͦͷ··"BB#VOEMF #CC#VOEMFʹͳ͍ͬͯΔ

Slide 7

Slide 7 text

ҋΑΓੜ·Εࠞ͠ಱͷຐԦ Ͳ͏͍͏͜ͱ͕ى͖Δ͔ʁ w ػೳ"ɾػೳ#͕ͦͷ··"BB#VOEMF #CC#VOEMFʹͳ͍ͬͯΔ w ػೳ$Λ࡞Δ͜ͱʹͳͬͨɻػೳ$ͷΤϯςΟςΟ͸ػೳ"ͷΤϯςΟςΟʹ ؔ࿈͍͍ͮͯͯɺػೳ#͕͍࣋ͬͯΔॲཧ΋࢖͍·Θ͍ͨ͠ͳʔ

Slide 8

Slide 8 text

ҋΑΓੜ·Εࠞ͠ಱͷຐԦ Ͳ͏͍͏͜ͱ͕ى͖Δ͔ʁ w ػೳ"ɾػೳ#͕ͦͷ··"BB#VOEMF #CC#VOEMFʹͳ͍ͬͯΔ w ػೳ$Λ࡞Δ͜ͱʹͳͬͨɻػೳ$ͷΤϯςΟςΟ͸ػೳ"ͷΤϯςΟςΟʹ ؔ࿈͍͍ͮͯͯɺػೳ#͕͍࣋ͬͯΔΫϥε΋࢖͍·Θ͍ͨ͠ͳʔ w $DD#VOEMFͷΫϥε͕"BB#VOEMF #CC#VOEMFͷΫϥεʹґଘ͢Δ w VTF.Z"QQa#VOEMFa"BB#VOEMFa&OUJUZa'PP#BS w VTF.Z"QQa#VOEMFa#CC#VOEMFa)PHF)PHF

Slide 9

Slide 9 text

ҋΑΓੜ·Εࠞ͠ಱͷຐԦ Ͳ͏͍͏͜ͱ͕ى͖Δ͔ʁ w ࠓ౓͸ػೳ#ͷػೳ௥Ճ͕ൃੜͯ͠ɺػೳ$ʹ͋ΔΫϥεΛ࢖͍ͨ͘ͳͬͨ

Slide 10

Slide 10 text

ҋΑΓੜ·Εࠞ͠ಱͷຐԦ Ͳ͏͍͏͜ͱ͕ى͖Δ͔ʁ w ࠓ౓͸ػೳ#ͷػೳ௥Ճ͕ൃੜͯ͠ɺػೳ$ʹ͋ΔΫϥεΛ࢖͍ͨ͘ͳͬͨ ΧΦεͷ༧ײʂ

Slide 11

Slide 11 text

ҋΑΓੜ·Εࠞ͠ಱͷຐԦ ΫϩεϦϑΝϨϯε஍ࠈ w ػೳ" ػೳ#Λվम͢Δͱػೳ$ʹ೾ٴ͢Δ w ػೳ$Λվम͢Δͱػೳ#ʹ΋೾ٴ͢Δ

Slide 12

Slide 12 text

ҋΑΓੜ·Εࠞ͠ಱͷຐԦ ΫϩεϦϑΝϨϯε஍ࠈ w ػೳ" ػೳ#Λվम͢Δͱػೳ$ʹ೾ٴ͢Δ w ػೳ$Λվम͢Δͱػೳ#ʹ΋೾ٴ͢Δ ׬શͳΔΧΦε

Slide 13

Slide 13 text

ΫϩεϦϑΝϨϯεͰࠔͬͯΔΜ͢Αʙͱݴ͏ͱ͍͚ͨͩΔ͋Γ͕ͪͳΞυόΠε ίϯςΫετڥքΛීஈ͔ΒͪΌΜͱҙࣝ͠ ͯʙ ґଘͷํ޲Λීஈ͔ΒͪΌΜͱҙࣝͯ͠ʙ

Slide 14

Slide 14 text

ΫϩεϦϑΝϨϯεͰࠔͬͯΔΜ͢Αʙͱݴ͏ͱ͍͚ͨͩΔ͋Γ͕ͪͳΞυόΠε ίϯςΫετڥքΛීஈ͔ΒͪΌΜͱҙࣝ͠ ͯʙ ґଘͷํ޲Λීஈ͔ΒͪΌΜͱҙࣝͯ͠ʙ ਓྨʹ͸ແཧ

Slide 15

Slide 15 text

ΫϩεϦϑΝϨϯεΛ๷͙ʹ͸ɺڥք͝ͱʹ༧ ΊϨϙδτϦΛ෼͚Ε͹ྑ͍ɻߥྍ࣏͚ͩͲ ઈରʹΫϩεϦϑΝϨϯεͰ͖ͳ͍ʢ෺ཧʣɻ

Slide 16

Slide 16 text

ࠞಱΛ෧ҹ͢ΔͨΊͷߥྍ࣏

Slide 17

Slide 17 text

ࠞಱΛ෧ҹ͢ΔͨΊͷߥྍ࣏ ϧʔϧ w "BB#VOEMF #CC#VOEMF $DD#VOEMF͸͢΂ͯผͷHJUϨϙδτϦʹஔ͘ w 4ZNGPOZίϯϙʔωϯτ͕ͦΕͧΕಠཱͨ͠HJUϨϙδτϦʹஔ͔Ε͍ͯͯ TZNGPOZTZNGPOZશ෦ΛಡΈࠐ·ͳͯ͘΋ඞཁͳίϯϙʔωϯτʢTZNGPOZ ZBNMͱ͔ʣ͚ͩSFRVJSFͯ͠࢖͑ΔΠϝʔδ ˞ຊՈ4ZNGPOZ͸TZNGPOZTZNGPOZͱ͍͏ϞϊϦεͰ։ൃͨ͠΋ͷΛTQMJUTIͱ ͍͏εΫϦϓτΛ࢖ͬͯݸผͷίϯϙʔωϯτʹ෼͚ΒΕ͍ͯΔͷͰݫີʹ͸ҧ ͍·͢ w ͨͩ͠ɺ"BB#VOEMF #CC#VOEMF $DD#VOEMF͸૬ޓʹDPNQPTFSSFRVJSF ېࢭ

Slide 18

Slide 18 text

ࠞಱΛ෧ҹ͢ΔͨΊͷߥྍ࣏ ࣮ࡍʹ࢖ͬͨςΫχοΫ঺հ  ΞϓϦέʔγϣϯͱόϯυϧΛ෼཭ w ػೳ"ɾػೳ#ɾػೳ$Λඋ͑ͨ8FCΞϓϦέʔγϣϯͱͯ͠Ϣʔβʔʹఏڙ ͢ΔͨΊʹ͸ɺ"BB#VOEMF #CC#VOEMF $DD#VOEMFΛ͢΂ͯDPNQPTFS SFRVJSFͯ͠౷߹͢Δ4ZNGPOZΞϓϦέʔγϣϯ͸ඞཁ w Ϣʔβʔొ࿥ɾϩάΠϯɾϩάΞ΢τɾ՝ۚʜͱ͍ͬͨ8FCαʔϏεͱͯ͠ ͷৼΔ෣͍͸4ZNGPOZΞϓϦέʔγϣϯଆ͕࣋ͭ w "BB#VOEMF #CC#VOEMF $DD#VOEMF͸8FCαʔϏεͱͯ͠ͷৼΔ෣͍ʹ͸ ؔ৺Λ࣋ͨͣɺ֤πʔϧͷػೳ͚ͩΛ࣋ͭ

Slide 19

Slide 19 text

ࠞಱΛ෧ҹ͢ΔͨΊͷߥྍ࣏ ࣮ࡍʹ࢖ͬͨςΫχοΫ঺հ  JOUFSGBDF w ػೳ"ʹ͸ΞϓϦέʔγϣϯͷ6TFS͕ॴ༗͢Δ"BB3FTPVSDFͱ͍͏ΤϯςΟςΟ͕ ඞཁ w "BB#VOEMF͸ΞϓϦέʔγϣϯͷ6TFSʹ͸ґଘͰ͖ͳ͍ w "BB#VOEMF͸6TFSΛ࣋ͭ4ZNGPOZΞϓϦέʔγϣϯΛDPNQPTFSSFRVJSFͯ͠ͳ ͍ w ٯʹ4ZNGPOZΞϓϦέʔγϣϯͷଆ͸"BB#VOEMFΛDPNQPTFSSFRVJSF͍ͯ͠Δ w "BB#VOEMFʹ"BB3FTPVSDF0XOFS*OUFSGBDFΛఆٛ͠ɺ4ZNGPOZΞϓϦέʔγϣϯ ͷ6TFS͸"BB3FTPVSDF0XOFS*OUFSGBDFΛJNQMFNFOUTͨ͠

Slide 20

Slide 20 text

ࠞಱΛ෧ҹ͢ΔͨΊͷߥྍ࣏ ࣮ࡍʹ࢖ͬͨςΫχοΫ঺հ  $POUSBDU w "BB#VOEMFͷΤϯςΟςΟʹ$DD#VOEMFͷΤϯςΟςΟ͕ґଘ͍͚ͨ͠Ͳ $DD#VOEMF͸ΞϓϦଆʹґଘʢDPNQPTFSSFRVJSFʣͰ͖ͳ͍ w "BB#VOEMF $DD#VOEMFύοέʔδͱ͸ผʹ$POUSBDUύοέʔδΛ࡞Δ w $POUSBDUύοέʔδ͸JOUFSGBDF͚ͩΛ࣋ͭ w "BB#VOEMF $DD#VOEMF͸$POUSBDUύοέʔδΛDPNQPTFSSFRVJSFͯ͠ྑ ͍

Slide 21

Slide 21 text

ࠞಱΛ෧ҹ͢ΔͨΊͷߥྍ࣏ ࣮ࡍʹ࢖ͬͨςΫχοΫ঺հ  3FTPMWF5BSHFU&OUJUZ w $POUSBDU΍#VOEMFଆͷJOUFSGBDFΛ࣮ࡍʹΤϯςΟςΟͱͯ͠࢖͏ͨΊʹɺ %PDUSJOF ͷػೳz3FTPMWF5BSHFU&OUJUZzΛ࢖͏ https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/cookbook/resolve-target- entity-listener.html

Slide 22

Slide 22 text

ࠞಱΛ෧ҹ͢ΔͨΊͷߥྍ࣏ ࣮ࡍʹ࢖ͬͨςΫχοΫ঺հ  3FTPMWF5BSHFU&OUJUZ

Slide 23

Slide 23 text

ߥྍ࣏Λ࢝Ί࣮ͯࡍʹى͖ͨ͜ͱ

Slide 24

Slide 24 text

࣮ࡍʹى͖ͨ͜ͱ ʢʣґଘؔ܎ͷ൓స w ϞϊϦε࣌୅͸"BB#VOEMFa&OUJUZa"BB3FTPVSDF͕ "QQ#VOEMFa&OUJUZa6TFSΛVTF͍ͯͨ͠ w ࠓ౓͸"QQa&OUJUZa6TFS͕ "BB#VOEMFa&OUJUZa"BB3FTPVSDF0XOFS*OUFSGBDFΛJNQMFNFOUT͍ͯ͠Δ

Slide 25

Slide 25 text

࣮ࡍʹى͖ͨ͜ͱ ʢʣ8FCΞϓϦέʔγϣϯͱͯ͠ͷຊ࣭͕ଊ͑΍͘͢ͳͬͨ w 6TFSͷ࣋ͭ৘ใͷ͏ͪɺػೳ"ͷཁ੥Ͱ͍࣋ͬͯΔ৘ใ ʢ"BB3FTPVSDF0XOFS*OUFSGBDFͷϝιουʹରԠ߲ͨ͠໨ʣͱ8FCΞϓϦ έʔγϣϯͷձһͱͯ͠ඞཁͳ৘ใʢ"QQଆ͚ͩͰఆٛ͞Ε͍ͯΔ߲໨ʣ͕ ෼͚ͯଊ͑Δ͜ͱ͕Ͱ͖Δ w 8FCΞϓϦέʔγϣϯͱͯ͠ຊ౰ʹඞཁͳػೳʢຊ࣭ʣ͸Կͳͷ͔ݟ͑΍ ͍͢

Slide 26

Slide 26 text

࣮ࡍʹى͖ͨ͜ͱ ʢʣ4ZNGPOZͷ%FQFOEFODZ*OKFDUJPOίϯϙʔωϯτʹৄ͘͠ͳͬͨ w 3FTPVSDFTDPOpHTFSWJDFTZNMͷ͜ͱͰ͸ͳ͘"BB#VOEMF%FQFOEFODZ*OKFDUJPOʹ͋Δ ΫϥεͷதΛΰϦΰϦॻ͔͘Ͳ͏͔ͷ࿩ w 4ZNGPOZ࣌୅ʹόϯυϧελΠϧͰ։ൃ͍ͯͯ͠΋ΰϦΰϦॻ͍ͯͨਓ͸গͳ͍ʢͱࢥ͏ʣ w ͍͍ͤͥUBHΛ࡞ͬͯ$PNQJMFS1BTTͰҰׅॲཧͨ͠Γɺෳ਺ϑΝΠϧʹ෼ׂͨ͠αʔϏε ఆٛZNMΛಡΈࠐΜ͙ͩΒ͍ʁ w "BB#VOEMF͸3FTPVSDFTDPOpHTFSWJDFTZNMͰ8FCΞϓϦέʔγϣϯଆͷFOW΍ QBSBNFUFSΛ௚઀ࢀরͰ͖ͳ͍ͷͰɺ"BB#VOEMFa%FQFOEFODZ*OKFDUJPOa$POpHVSBUJPOͱ "BB#VOEMFa%FQFOEFODZ*OKFDUJPOa"BB&YUFOTJPOΛ࢖ͬͯFOW΍QBSBNFUFSΛऔΓࠐΉඞཁ ͕͋Δ

Slide 27

Slide 27 text

࣮ࡍʹى͖ͨ͜ͱ ʢʣ4ZNGPOZͷ%FQFOEFODZ*OKFDUJPOίϯϙʔωϯτʹৄ͘͠ͳͬͨ ϞβΠΫ෦෼͸αʔυύʔςΟόϯυϧ Ͱͳࣗ͘લόϯυϧͷઃఆZNM

Slide 28

Slide 28 text

࣮ࡍʹى͖ͨ͜ͱ ʢʣ$*͕͍ܰʂϩʔΧϧͰͷςετ࣮ߦ΋଎͍ʂ w ϞϊϦε࣌୅͸ΞϓϦέʔγϣϯશମͷςετΛ૸ΒͤΔͱ෼Ҏ্͔͔ Γɺ$*ͰύϥϨϧ࣮ߦͯ͠΋෼͔͔͍ۙͬͯͨ͘ w "BB#VOEMF #CC#VOEMF $DD#VOEMFͦΕͧΕ୯ମͰςετ͢Δͱɺ෼ະ ຬɻ౷߹ͨ͠ΞϓϦέʔγϣϯࣗମͷςετ΋෼͠ͳ͍ͰऴΘΔɻʢ͍ͣΕ ΋%#Λ࢖ͬͨػೳςετΛؚΉʣ w ։ൃऀ͕ͱͯ΋IBQQZ

Slide 29

Slide 29 text

࣮ࡍʹى͖ͨ͜ͱ ʢʣ෼୲͠΍͍͢ w ϞϊϦε࣌୅͸ؾΛ͚ͭͯΞαΠϯͯ͠΋ίϯϑϦΫτ͕ൃੜ͕ͪͩͬͨ͠ w ػೳ$ͷվम࣌ʹػೳ" ػೳ#ͷΫϥε΋৮ͬͪΌ͏ɾ৮Β͟ΔΛಘͳ͍έʔ ε͕ଟൃ͍ͯͨ͠ w ։ൃऀ9ʹ"BB#VOEMFɺ։ൃऀ:ʹ#CC#VOEMFΛΞαΠϯͨ͠Βશ͘ίϯϑϦ Ϋτ͠ͳ͍ w ͱ͸͍͑ɺ΋ͱ΋ͱਓ਺গͳ͍ˍ৭ʑ݉຿Ͱճͯ͠ΔͷͰϚδʹ஥ؒืूͰ͢ʂ ؾʹͳͬͨਓ͸ࢲ͔!TNEIPHFIPHF͔!LJONB@Oʹ੠͔͚͍ͯͩ͘͞ʂ

Slide 30

Slide 30 text

՝୊

Slide 31

Slide 31 text

՝୊ w ࣗࣾαʔϏεͳͷͰɺ։ൃ׬ྃͨ͠ޙʹ௕͍อकظ͕ؒ͋Δ w ͦͷؒͣͬͱϧʔϧΛकΓଓ͚ΒΕΔ͔Ͳ͏͔ʁ

Slide 32

Slide 32 text

՝୊ w ౷߹͞Εͨ4ZNGPOZΞϓϦέʔγϣϯ͸"BB#VOEMF #CC#VOEMF  $DD#VOEMFશͯͷΫϥεʹґଘͰ͖Δ w ͪΌΜͱؾΛ͚ͭͳ͍ͱ౷߹ΞϓϦέʔγϣϯ಺ͰΫϩεϦϑΝϨϯε͕ى ͖͏Δ w ٯʹɺ౷߹ΞϓϦέʔγϣϯϨΠϠʔ͚ͩ৻ॏʹॻ͚͹ݸผͷόϯυϧ಺ Ͱ͸ΫϩεϦϑΝϨϯε͸৺഑͠ͳͯ͘ྑ͍ͱ΋ݴ͑Δ͕ʜɻॻ͘ͷ͸ਓؒ ͳͷͰɻ

Slide 33

Slide 33 text

·ͱΊ

Slide 34

Slide 34 text

w Χϧςοτ։ൃ෦ͷ௅ઓ͸࢝·ͬͨ͹͔Γ w ੒ޭ͢Δ͔ɺരࢮ͢Δ͔·ͩΘ͔Βͳ͍ ·ͱΊ

Slide 35

Slide 35 text

5IBOLZPVBOEUPCFDPOUJOVFEʜ