$30 off During Our Annual Pro Sale. View Details »

LaravelでのDB操作を監視する

 LaravelでのDB操作を監視する

2020-05-16に開催された【オンライン】関西PHP勉強会で発表したスライドです。 #phpkansai

Ippei Sumida

May 16, 2020
Tweet

More Decks by Ippei Sumida

Other Decks in Programming

Transcript

  1. LaravelͰͷDBૢ࡞Λ
    ؂ࢹ͢Δ
    ʲΦϯϥΠϯʳؔ੢PHPษڧձ
    2020-05-16 Ippei Sumida

    View Slide

  2. # WHOAMI
    - ֯ాɹҰฏʢ͢Έͩɹ͍ͬ΃͍ʣ

    - ϑϦʔϥϯεσϕϩούʔ

    - PHPͳͲͰWeb։ൃͯ͠·͢

    - ຕํࢢͷίϫʔΩϯάεϖʔε

    ʰSHINCRUʱͷӡӦελοϑͯ͠·͢

    - CoderDojoຕํ΍ͬͯ·͢

    View Slide

  3. ʮԿ΋ͯ͠ͳ͍ͷʹյΕͨʯ

    View Slide

  4. ͋ɺσʔλ࡟আ͞Εͯ·͢Ͷʔ
    ˎˎͷσʔλ͕දࣔ͞Εͯͳ͍ΜͰ͚͢Ͳʁ
    ͑ʂͳʹ΋ͯ͠ͳ͍Ͱ͢ΑʂʂόάͰ͔͢ʁʁʁ
    ͍΍ɺγεςϜతʹ͸ਖ਼ৗʹಈT
    ͪΌΜͱௐࠪͯ͠ใࠂॻग़͍ͯͩ͘͠͞ʂʂ

    View Slide

  5. ͏ͪͷ#͞Μ͕࡟আͨ͠Μͩͬͯ❤

    View Slide

  6. ୭͕ԿΛ͔ͨ͠؂ࢹ͍ͨ͠

    View Slide

  7. Laravel Auditing

    View Slide

  8. Laravel AuditingͰͰ͖Δ͜ͱ
    Laravel্ͷ…
    • DBૢ࡞ͷ؂ࢹ
    • ؂ࢹσʔλͷऔಘ
    • ͩΕ͕ɾ͍ͭɾͲ͜ͰɾͳʹΛ͔ͨ͠Λ೺Ѳ
    • ߋ৽ͷࠩ෼ʢͳʹΛͲ͏ม͔͑ͨʣΛ೺Ѳ

    View Slide

  9. Πϯετʔϧ
    composer require owen-it/laravel-auditing

    View Slide

  10. ઃఆ1
    ‘providers’ => [
    + OwenIt\Auditing\AuditingServiceProvider::class
    ],
    # config/audit.phpੜ੒
    php artisan vendor:publish —provider \
    ”OwenIt\Auditing\AuditingServiceProvider” \
    --tag="config"
    # ϚΠάϨʔγϣϯʢauditsςʔϒϧCREATEʣੜ੒
    php artisan vendor:publish —provider \
    “OwenIt\Auditing\AuditingServiceProvider" \
    -—tag=“migrations"
    ˌϚΠάϨʔγϣϯ
    php artisan migrate
    DPOpHBQQQIQ

    View Slide

  11. ઃఆ2
    namespace App;
    use Illuminate\Database\Eloquent\Model;
    + use OwenIt\Auditing\Contracts\Auditable;
    +
    + class Item extends Model implements Auditable
    - class Item extends Model
    {
    + use \OwenIt\Auditing\Auditable;
    BQQ*UFNQIQ

    View Slide

  12. ؂ࢹελʔτ

    View Slide

  13. id
    user_ty
    pe
    user_id event
    auditabl
    e_type
    auditabl
    e_id
    old_val
    ues
    new_val
    ues
    url
    ip_addr
    ess
    user_ag
    ent
    tags
    created
    _at
    updated
    _at
    1
    App\Use
    r
    1 updated App\Item 2
    {"name":
    "\u8ffd\u
    52a01"}
    {"name":
    "\u8ffd\u
    52a02"}
    http://
    localhost
    :8000/
    items/2
    127.0.0.
    1
    Mozilla/
    5.0
    (Macinto
    sh; Intel
    Mac OS
    X
    10_15_3
    NULL
    2020-03-
    23
    12:20:34
    2020-03-
    23
    12:20:34
    2
    App\Use
    r
    1 created App\Item 3 []
    {"name":
    "\u307b\
    u3052","
    stock":"1
    0","id":3}
    http://
    localhost
    :8000/
    items
    127.0.0.
    1
    Mozilla/
    5.0
    (Macinto
    sh; Intel
    Mac OS
    X
    10_15_3
    NULL
    2020-03-
    23
    12:21:39
    2020-03-
    23
    12:21:39
    3
    App\Use
    r
    1 deleted App\Item 3
    {"id":"3","
    name":"\
    u307b\u
    3052","st
    ock":"10"
    }
    []
    http://
    localhost
    :8000/
    items/3
    127.0.0.
    1
    Mozilla/
    5.0
    (Macinto
    sh; Intel
    Mac OS
    X
    10_15_3
    NULL
    2020-03-
    23
    12:51:57
    2020-03-
    23
    12:51:57

    View Slide

  14. ϓϩάϥϜͰ
    औಘ
    $item = Item::find(1);
    // ֘౰σʔλͷશͯͷ؂ࢹσʔλ
    $audits = $item->audits;
    // ֘౰σʔλͷ࠷ॳͷ؂ࢹσʔλ
    $first = $item->audits()->first();
    // ֘౰σʔλͷ௚ۙͷ؂ࢹσʔλ
    $latest = $item->audits()->latest()->first();
    // ֘౰σʔλͷ؂ࢹσʔλͷIDࢦఆ
    $audit = $item->audits()->find(1);

    View Slide

  15. ͩΕ͕ ԿΛͨ͠ ͞ΘͬͨϞσϧ ͞Θͬͨσʔλ ͼ;͒ʔ ͋;ͨʔ
    1 updated App\Item 2
    {"name":"\u8ffd\u52a
    01"}
    {"name":"\u8ffd\u52a
    02"}

    View Slide

  16. Ͳ͜Ͱ ͲͷIPΞυϨεͰ Ͳͷϒϥ΢βͰ ͍ͭ
    http://localhost:8000/items/2 127.0.0.1
    Mozilla/5.0 (Macintosh; Intel Mac
    OS X 10_15_3) AppleWebKit/
    605.1.15 (KHTML, like Gecko)
    Version/13.0.5 Safari/605.1.15
    2020-03-23 12:20:34

    View Slide

  17. ͋ɺσʔλ࡟আ͞Εͯ·͢Ͷʔ
    ˎˎͷσʔλ͕දࣔ͞Εͯͳ͍ΜͰ͚͢Ͳʁ
    ͑ʂͳʹ΋ͯ͠ͳ͍Ͱ͢ΑʂʂόάͰ͔͢ʁʁʁ
    #͞Μ͕೔ͷ࣌͝ΖʹεϚϗͰ࡟আͯ͠·͢Ͷɻ
    ͦ͏Ͱ͔͢ɻ#͞Μʹฉ͍ͯΈ·͢ʂ

    View Slide

  18. એ఻

    View Slide

  19. Symfony Meetup Kansai
    ΍ͬͯ·͢

    View Slide

  20. Symfony Meetup Kansai͸͜Μͳͱ͜Ζ
    • Symfonyʹ͍ͭͯࡶஊ͢ΔձʢݱࡏΦϯϥΠϯ։࠵ʣ
    • Symfonyͷܦݧ໰Θͣ
    • SymfonyͰʙͭͬͨ͘ɺʙͬͯػೳ͔ͭͬͯΈͨɺͱ͍͏ࣄྫ঺հ΍
    ։ൃख๏ͳͲΛ৘ใڞ༗
    • ࣍͸6݄͔7݄͘Β͍ʹ։࠵༧ఆ

    View Slide

  21. ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide