Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LaravelのQuery Scopesについて #fukuokaphp

Be115e57bf59394b2fbc150be42bb53b?s=47 akase244
August 08, 2018

LaravelのQuery Scopesについて #fukuokaphp

Fukuoka.php Vol.26 の発表資料です。
https://fukuokaphp.connpass.com/event/95672/

Be115e57bf59394b2fbc150be42bb53b?s=128

akase244

August 08, 2018
Tweet

Transcript

  1. www.innovator.jp.net 'VLVPLBQIQ7PM  -BSBWFMͷ2VFSZ4DPQFTʹ͍ͭͯ ੺੉ɹ߶ 'VLVPLBQIQ7PM   

  2. www.innovator.jp.net 'VLVPLBQIQ7PM  ΞδΣϯμ • ࣗݾ঺հ • ࠓճ࣮ݱ͍ͨ͠಺༰ • 4PGU%FMFUJOH

    • .PEFMΫϥεͷOFX2VFSZϝιουΛΦʔόʔϥΠυ • 2VFSZ4DPQFT • ࣮ࡍͷۀ຿ͷϓϩμΫγϣϯίʔυΛղઆ • ·ͱΊ  
  3. www.innovator.jp.net 'VLVPLBQIQ7PM  ࣗݾ঺հ • ੺੉ɹ߶ʢ͔͋ͤɹͭΑ͠ʣ • גࣜձࣾΠϊϕʔλʔɾδϟύϯ • ΤϯδχΞʢ1)1ɺ+BWB4DSJQUɺ"84ʣ

    • ษڧձίϛϡχςΟʢ'VLVPLBQIQ1)1ΧϯϑΝϨϯε෱Ԭʣ • !BLBTFʢ4/4ʣ  
  4. www.innovator.jp.net 'VLVPLBQIQ7PM  ࠓճ࣮ݱ͍ͨ͠಺༰  

  5. www.innovator.jp.net 'VLVPLBQIQ7PM   ϞσϧΛݺͼग़ͨ͠ࡍʹ ݻఆͷ৚݅ͰߜΓࠐ·Εͨ ঢ়ଶʹͳͬͯ΄͍͠  

  6. www.innovator.jp.net 'VLVPLBQIQ7PM  • $VTUPNFSϞσϧʢݱࡏ༗ޮͳސ٬ʣͱ-FGU$VTUPNFSϞσϧ ʢ$VTUPNFSϞσϧΛܧঝͯ͠࡞੒ʗୀձࡁΈͷސ٬ʣͷͦΕͧΕͰ ΫΤϦʔΛݺͼग़ͨ͠ࡍʹɺৗʹҎԼͷΑ͏ͳݻఆͷ৚݅ͰߜΓࠐ·Ε ͨঢ়ଶʹͳͬͯ΄͍͠ɻ  

    ݱࡏ༗ޮͳސ٬ͷநग़ ୀձࡁΈͷސ٬ͷநग़
  7. www.innovator.jp.net 'VLVPLBQIQ7PM  • ࣮ݱʹ޲͚ͯͭͷख๏Λௐࠪ • 4PGU%FMFUJOH • .PEFMΫϥεͷOFX2VFSZϝιουΛΦʔόʔϥΠυ •

    2VFSZ4DPQF  
  8. www.innovator.jp.net 'VLVPLBQIQ7PM  ͱ͍͏͜ͱͰ ॱʹઆ໌͍͖ͯ͠·͢  

  9. www.innovator.jp.net 'VLVPLBQIQ7PM  4PGU%FMFUJOH  

  10. www.innovator.jp.net 'VLVPLBQIQ7PM   ΍Γ͍ͨ͜ͱ͸࿦ཧ࡟আͳͷͰ -BSBWFMͷ4PGU%FMFUJOHػೳ͕ ࢖͑Δ͔΋͠Εͳ͍  

  11. www.innovator.jp.net 'VLVPLBQIQ7PM  4PGU%FMFUJOH • -BSBWFMͷ࿦ཧ࡟আػೳ͸ඪ४Ͱ࣮૷͞Ε͍ͯΔɻ • IUUQTMBSBWFMDPNEPDTFMPRVFOUEFMFUJOHNPEFMT • ʮ4PGU%FMFUJOHʯͱͯ͠આ໌͞Ε͍ͯΔɻ

    • ʮEFMFUFE@BUʯΛΧϥϜͱͯ͠௥Ճɻ • ϞσϧʹҎԼͷهड़Λ௥Ճɻ • VTF*MMVNJOBUFa%BUBCBTFa&MPRVFOUa4PGU%FMFUFT • VTF4PGU%FMFUFT • QSPUFDUFEEBUFT<bEFMFUFE@BU>  
  12. www.innovator.jp.net 'VLVPLBQIQ7PM  4PGU%FMFUJOH • Ϟσϧͷهड़ํ๏  

  13. www.innovator.jp.net 'VLVPLBQIQ7PM  4PGU%FMFUJOH • NJHSBUJPOϑΝΠϧͷهड़ํ๏ • ʮUBCMFEBUF5JNF bEFMFUFE@BU OVMMBCMF

    ʯͰ͸ͳ͘ • ʮUBCMFTPGU%FMFUFT ʯͱ͍͏ܾ·ͬͨॻࣜͰهड़͢Δɻ  
  14. www.innovator.jp.net 'VLVPLBQIQ7PM  4PGU%FMFUJOH • ػೳ͕ແޮͳ৔߹ɺʮNPEFMEFMFUF ʯΛݺͿͱ෺ཧ࡟আ͞ΕΔɻ • ػೳ͕༗ޮͳ৔߹ɺʮNPEFMEFMFUF ʯΛݺͿͱ࿦ཧ࡟আ͞ΕΔɻ

     
  15. www.innovator.jp.net 'VLVPLBQIQ7PM  4PGU%FMFUJOH • ҎԼͷػೳʹ͍ͭͯ͸υΩϡϝϯτΛࢀরͯ͠Έ͍ͯͩ͘͞ɻ • ࿦ཧ࡟আࡁΈͷϨίʔυ͔Λ൑ఆ͢Δํ๏ USBTIFE 

    • ࿦ཧ࡟আࡁΈͷϨίʔυ΋ؚΊͯநग़͢Δํ๏ XJUI5SBTIFE  • ࿦ཧ࡟আࡁΈͷϨίʔυͷΈΛநग़͢Δํ๏ POMZ5SBTIFE  • ࿦ཧ࡟আࡁΈͷϨίʔυΛ෮ݩ͢Δํ๏ SFTUPSF  • ෺ཧ࡟আ͢Δํ๏ GPSDF%FMFUF  
  16. www.innovator.jp.net 'VLVPLBQIQ7PM  4PGU%FMFUJOHͰ͸ 
 8)&3&JT@MFGUGBMTF "/%MFGU@BU*4/6-- ͱ͍͏৚݅Ͱͷநग़͸ແཧͬΆ͍  

  17. www.innovator.jp.net 'VLVPLBQIQ7PM  # ΧϥϜ໊΍நग़৚݅ͷ࢓༷͕ ݻఆ͞Ε͍ͯΔͨΊ ࣮ݱͰ͖ͳ͍͜ͱ͕൑໌  

  18. www.innovator.jp.net 'VLVPLBQIQ7PM  4PGU%FMFUJOHҎ֎ͷํ๏͸ʁ  

  19. www.innovator.jp.net 'VLVPLBQIQ7PM  ৗʹݻఆͷ৚݅Ͱநग़͢Δํ๏ΛάάͬͯΈΔ • ʮFMPRVFOUݻఆ৚݅ʯͰάάͬͯΈΔɻ  

  20. www.innovator.jp.net 'VLVPLBQIQ7PM  ৗʹݻఆͷ৚݅Ͱநग़͢Δํ๏ΛάάͬͯΈΔ • .PEFMͷOFX2VFSZΛΦʔόʔϥΠυ͢Δํ๏͕ώοτ͢Δɻ  

  21. www.innovator.jp.net 'VLVPLBQIQ7PM  ৗʹݻఆͷ৚݅Ͱநग़͢Δํ๏ΛάάͬͯΈΔ • ʮFMPRVFOUEFGBVMUDPOEJUJPOʯͰάάͬͯΈΔɻ  

  22. www.innovator.jp.net 'VLVPLBQIQ7PM  ৗʹݻఆͷ৚݅Ͱநग़͢Δํ๏ΛάάͬͯΈΔ • .PEFMͷOFX2VFSZΛΦʔόʔϥΠυ͢Δํ๏͕ώοτ͢Δɻ  

  23. www.innovator.jp.net 'VLVPLBQIQ7PM   OFX2VFSZϝιουΛ ΦʔόʔϥΠυ͢Δͱ͍͏ ํ๏͕͋ΔΒ͍͠ͷͰௐࠪ  

  24. www.innovator.jp.net 'VLVPLBQIQ7PM  .PEFMΫϥεͷOFX2VFSZϝιουΛΦʔόʔϥΠυ  

  25. www.innovator.jp.net 'VLVPLBQIQ7PM  ͳͥɺOFX2VFSZΛ ΦʔόʔϥΠυ͢Δͱ ͏·͍͘͘ͷ͔ʁ  

  26. www.innovator.jp.net 'VLVPLBQIQ7PM  .PEFMͷ@@DBMMϝιουͷ࣮૷ΛݟͯΈΔ • ʮGPPXIFSFʯ౳ΛݺͿͱɺXIFSF͸.PEFMʹ͸ఆٛ͞Ε͓ͯΒͣɺ .PEFMͰVTF͞Ε͍ͯΔ#VJMEFSͷΠϯελϯεϝιουͳͷͰɺ.PEFM ͷ@@DBMMΛܦ༝ͯ͠OFX2VFSZ͕ݺ͹Εɺ͞ΒʹXIFSF͕ݺͼग़͞Ε· ͢ɻ 

    
  27. www.innovator.jp.net 'VLVPLBQIQ7PM  .PEFMͷ@@DBMM4UBUJDϝιουͷ࣮૷ΛݟͯΈΔ • ʮ'PPXIFSFʯ౳ΛݺͿͱɺXIFSF͸.PEFMʹ͸ఆٛ͞Ε͓ͯΒͣɺ .PEFMͰVTF͞Ε͍ͯΔ#VJMEFSͷΠϯελϯεϝιουͳͷͰɺ.PEFM ͷ@@DBMM4UBUJDɺ@@DBMMΛܦ༝ͯ͠ɺҎԼলུɻ  

  28. www.innovator.jp.net 'VLVPLBQIQ7PM  ͭ·ΓɺOFX2VFSZ͸ ඞͣݺͼग़͞ΕΔͷͰ ͜͜ʹநग़৚݅Λॻ͘ ͜ͱͰ͏·͘ಈ࡞͢Δ  

  29. www.innovator.jp.net 'VLVPLBQIQ7PM  .PEFMΫϥεͷOFX2VFSZϝιουΛΦʔόʔϥΠυ • .PEFMΫϥεͷOFX2VFSZϝιουͷ࣮૷Λ֬ೝ • SFHJTUFS(MPCBM4DPQFTϝιουͷݺͼग़͕͠ߦΘΕ͍ͯΔɻ  

  30. www.innovator.jp.net 'VLVPLBQIQ7PM  ⚠ ΦʔόʔϥΠυ࣌ʹ QBSFOUOFX2VFSZΛॻ͖๨ΕΔͱ SFHJTUFS(MPCBM4DPQFTϝιουͷ ݺͼग़͠Λഁغͯ͠͠·͏ͷͰ஫ҙ  

  31. www.innovator.jp.net 'VLVPLBQIQ7PM  # ϞσϧΛܧঝ͢Δ৔߹ʹ ҙਤͨ͠நग़݁ՌʹͳΒͳ͍  

  32. www.innovator.jp.net 'VLVPLBQIQ7PM  # OFX2VFSZʹॻ͔Εͨநग़৚݅͸ ղআ͢Δ͜ͱ͕Ͱ͖ͳ͍  

  33. www.innovator.jp.net 'VLVPLBQIQ7PM  ໰୊ͩΒ͚ʹݟ͑·͕͢ ղܾͷώϯτ͕͋Γ·ͨ͠Ͷʁ  

  34. www.innovator.jp.net 'VLVPLBQIQ7PM  SFHJTUFS(MPCBM4DPQFT  

  35. www.innovator.jp.net 'VLVPLBQIQ7PM  ৗʹݻఆͷ৚݅Ͱநग़͢Δํ๏ΛάάͬͯΈΔ • ʮFMPRVFOUBMXBZTDPOEJUJPOʯͰάάͬͯΈΔɻ  

  36. www.innovator.jp.net 'VLVPLBQIQ7PM  ৗʹݻఆͷ৚݅Ͱநग़͢Δํ๏ΛάάͬͯΈΔ • ʮ(MPCBM4DPQFʯΛར༻͢Δํ๏͕ώοτ͢Δɻ  

  37. www.innovator.jp.net 'VLVPLBQIQ7PM  ৗʹݻఆͷ৚݅Ͱநग़͢Δํ๏ΛάάͬͯΈΔ • ઌ΄Ͳ঺հͨ͠هࣄͷଓ͖ʹ΋TDPQFʹ͍ͭͯͷهड़͕͋Γ·͢ɻ  

  38. www.innovator.jp.net 'VLVPLBQIQ7PM  ͱ͍͏͜ͱͰ 2VFSZ4DPQFʹ͍ͭͯ ݟ͍͖ͯ·͠ΐ͏  

  39. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT  

  40. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • IUUQTMBSBWFMDPNEPDTFMPRVFOURVFSZTDPQFT • ʮ2VFSZ4DPQFTʯͱͯ͠આ໌͞Ε͍ͯΔɻ • ʮ(MPCBM4DPQFTʯͱʮ-PDBM4DPQFTʯͷछྨ͕͋Δɻ

     
  41. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • (MPCBM4DPQFTػೳͷઆ໌ • (MPCBM4DPQFTΛར༻͢ΔͱϞσϧͷ͢΂ͯͷΫΤϦʔʹ੍໿Λద ༻Ͱ͖·͢ɻ •

    TPGUEFMFUFػೳ͸ɺ(MPCBM4DPQFTΛར༻ͯ͠Ϟσϧ͔Β࡟আ͞Ε ͍ͯͳ͍σʔλͷநग़Λߦ͍ͬͯ·͢ɻͱͷهड़͋Γɻ  
  42. www.innovator.jp.net 'VLVPLBQIQ7PM   ͜Εͩʂʂ  

  43. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • (MPCBM4DPQFTͷར༻ํ๏ • ΫϥεΛఆٛ͠ద༻͢Δํ๏ • ΫϩʔδϟͰهड़͠ద༻͢Δํ๏

     
  44. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • (MPCBM4DPQFTͷར༻ํ๏ • ΫϥεΛఆٛ͠ద༻͢Δํ๏ • 4DPQFΠϯλʔϑΣΠεΛ࣮૷ͨ͠ΫϥεΛ࡞੒͢Δɻ

     
  45. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • (MPCBM4DPQFTͷར༻ํ๏ • ΫϥεΛఆٛ͠ద༻͢Δํ๏ • CPPUϝιου಺ͰBEE(MPCBM4DPQFͰద༻͢Δɻ

     
  46. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • (MPCBM4DPQFTͷར༻ํ๏ • ΫϩʔδϟͰهड़͠ద༻͢Δํ๏ • CPPUϝιου಺ͰBEE(MPCBM4DPQFͰద༻͢Δɻ

     
  47. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • -PDBM4DPQFTͷར༻ํ๏ • .PEFMʹTDPQF ϝιουΛఆٛ͢Δɻ 

    
  48. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • -PDBM4DPQFTͷར༻ํ๏ • .PEFMʹTDPQF ϝιουΛఆٛ͢Δɻ 

    
  49. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • -PDBM4DPQFTͷར༻ํ๏ • TDPQF ͷʮ ʯͷ෦෼͕-PDBM4DPQFTͷݺͼग़໊͠ʹͳΔɻ

     
  50. www.innovator.jp.net 'VLVPLBQIQ7PM  ࠓճ࣮ݱ͍ͨ͠಺༰Λ ࢥ͍ग़͠·͠ΐ͏  

  51. www.innovator.jp.net 'VLVPLBQIQ7PM  ࠓճ࣮ݱ͍ͨ͠಺༰ • $VTUPNFSϞσϧʢݱࡏ༗ޮͳސ٬ʣͱ-FGU$VTUPNFSϞσϧ ʢ$VTUPNFSϞσϧΛܧঝͯ͠࡞੒ʗୀձࡁΈͷސ٬ʣͷͦΕͧΕͰ ΫΤϦʔΛݺͼग़ͨ͠ࡍʹɺৗʹҎԼͷΑ͏ͳݻఆͷ৚݅ͰߜΓࠐ·Ε ͨঢ়ଶʹͳͬͯ΄͍͠ɻ 

     ݱࡏ༗ޮͳސ٬ͷநग़ ୀձࡁΈͷސ٬ͷநग़
  52. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • ࣮ࡍͷۀ຿ͷϓϩμΫγϣϯίʔυΛղઆ • $VTUPNFSϞσϧͷCPPUϝιουͰΫϩʔδϟΛ࢖ͬͯద༻  

  53. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • ࣮ࡍͷۀ຿ͷϓϩμΫγϣϯίʔυΛղઆ • -FGU$VTUPNFSϞσϧͷTFU4DPQFTϝιουΛΦʔόʔϥΠυɻ • $VTUPNFSϞσϧͷείʔϓ໊

    SFUSJFWF@DVTUPNFS ͱಉ໊ʹ͢Δ͜ ͱͰɺܧঝͭͭ͠Ϟσϧͷঢ়گʹԠͨ͡είʔϓΛద༻͍ͯ͠Δɻ  
  54. www.innovator.jp.net 'VLVPLBQIQ7PM   ܧঝͯ͠΋େৎ෉ʂʂ  

  55. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • ର࿩ܕίϚϯυͷUJOLFSΛ࢖ͬͯΫΤϦʔঢ়گΛ֬ೝ • $VTUPNFSϞσϧͷBMMϝιουΛ࣮ߦ͢ΔͱɺJT@MFGU͕GBMTF ஫ɿ .Z42-ͷCPPMFBOܕͳͷͰͱදࣔ͞Ε͍ͯΔ

    ɺMFGU@BU͕OVMMͰந ग़͞Ε͍ͯΔ͜ͱ͕Θ͔Δɻ  
  56. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • ର࿩ܕίϚϯυͷUJOLFSΛ࢖ͬͯΫΤϦʔঢ়گΛ֬ೝ • -FGU$VTUPNFSϞσϧͷBMMϝιουΛ࣮ߦ͢ΔͱɺJT@MFGU͕USVF ஫ɿ .Z42-ͷCPPMFBOܕͳͷͰͱදࣔ͞Ε͍ͯΔ

    ɺMFGU@BUʹ೔෇͕ೖͬ ͍ͯΔ΋ͷ͕நग़͞Ε͍ͯΔ͜ͱ͕Θ͔Δɻ  
  57. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • (MPCBM4DPQFTΛআ֎͢Δํ๏ • ಛఆͷείʔϓΛআ֎͢Δ৔߹͸ɺXJUIPVU(MPCBM4DPQFϝιουΛ ར༻͢Δɻ 

    
  58. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • ࣮ࡍͷۀ຿ͷϓϩμΫγϣϯίʔυΛղઆ • $VTUPNFSϞσϧʹద༻͍ͯ͠Δ(MPCBM4DPQFTͷ໊শ SFUSJFWF@DVTUPNFS Λࢦఆͯ͠আ֎͢Δ͜ͱͰɺ͢΂ͯͷϨίʔυ

    Λநग़͍ͯ͠Δɻ  
  59. www.innovator.jp.net 'VLVPLBQIQ7PM   ղআ΋Ͱ͖Δʂʂ  

  60. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • ର࿩ܕίϚϯυͷUJOLFSΛ࢖ͬͯΫΤϦʔঢ়گΛ֬ೝ • $VTUPNFSϞσϧʹXJUIPVU(MPCBM4DPQFΛద༻্ͨ͠ͰBMMϝιου Λ࣮ߦ͢Δͱɺ͢΂ͯͷϨίʔυ͕நग़͞Ε͍ͯΔ͜ͱ͕Θ͔Δɻ 

    
  61. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • (MPCBM4DPQFTΛআ֎͢Δํ๏ • ෳ਺ͷείʔϓΛআ֎͢Δ৔߹͸ɺXJUIPVU(MPCBM4DPQFTϝιου Λར༻͢Δɻ 

    
  62. www.innovator.jp.net 'VLVPLBQIQ7PM  2VFSZ4DPQFT • ର࿩ܕίϚϯυͷUJOLFSΛ࢖ͬͯΫΤϦʔঢ়گΛ֬ೝ • $VTUPNFSϞσϧʹXJUIPVU(MPCBM4DPQFTΛద༻্ͨ͠ͰBMMϝιο υΛ࣮ߦ͢Δͱɺ͢΂ͯͷϨίʔυ͕நग़͞Ε͍ͯΔ͜ͱ͕Θ͔Δɻ 

    
  63. www.innovator.jp.net 'VLVPLBQIQ7PM  ·ͱΊ • ϞσϧΛݺͼग़ͨ͠ࡍʹݻఆͷ৚݅ͰߜΓࠐ·Εͨঢ়ଶʹ͢Δʹ͸ʁ • 4PGU%FMFUJOH͸࿦ཧ࡟আͱͯ͠ͷػೳ͸ඞཁे෼͕ͩநग़৚͕݅มߋͰ ͖ͳ͍ͷͰࠓճͷέʔεͰ͸ෆՄɻ •

    OFX2VFSZϝιουͷΦʔόʔϥΠυͰ࣮ݱՄೳɻ • ஫ҙͯ͠ΦʔόʔϥΠυ͠ͳ͍ͱطଘػೳʹӨڹΛ༩͑ͯ͠·͏ɻ • ϞσϧΛܧঝ͢Δͱҙਤͨ͠நग़݁ՌʹͳΒͳ͍ɻ • ৗʹநग़৚͕݅ద༻͞ΕΔͨΊɺநग़৚݅ΛղআͰ͖ͳ͍ɻ • 2VFSZ4DPQFTͷ(MPCBM4DPQFTΛར༻͢Δ͜ͱͰ࣮ݱՄೳɻ • ϞσϧΛܧঝͯ͠நग़৚݅Λ৔߹෼͚͢Δ͜ͱ͕Մೳɻ • நग़৚݅Λղআ͢Δ͜ͱ΋Մೳɻ  
  64. www.innovator.jp.net 'VLVPLBQIQ7PM  *U`TPWFS
 )BWFBRVFTUJPO