2020-05-16に開催された【オンライン】関西PHP勉強会で発表したスライドです。 #phpkansai
LaravelͰͷDBૢ࡞Λࢹ͢ΔʲΦϯϥΠϯʳؔPHPษڧձ2020-05-16 Ippei Sumida
View Slide
# WHOAMI- ֯ాɹҰฏʢ͢Έͩɹ͍͍ͬʣ- ϑϦʔϥϯεσϕϩούʔ- PHPͳͲͰWeb։ൃͯ͠·͢- ຕํࢢͷίϫʔΩϯάεϖʔε ʰSHINCRUʱͷӡӦελοϑͯ͠·͢- CoderDojoຕํͬͯ·͢
ʮԿͯ͠ͳ͍ͷʹյΕͨʯ
͋ɺσʔλআ͞Εͯ·͢Ͷʔˎˎͷσʔλ͕දࣔ͞Εͯͳ͍ΜͰ͚͢Ͳʁ͑ʂͳʹͯ͠ͳ͍Ͱ͢ΑʂʂόάͰ͔͢ʁʁʁ͍ɺγεςϜతʹਖ਼ৗʹಈTͪΌΜͱௐࠪͯ͠ใࠂॻग़͍ͯͩ͘͠͞ʂʂ
͏ͪͷ#͞Μ͕আͨ͠Μͩͬͯ❤
୭͕ԿΛ͔ͨ͠ࢹ͍ͨ͠
Laravel Auditing
Laravel AuditingͰͰ͖Δ͜ͱLaravel্ͷ…• DBૢ࡞ͷࢹ• ࢹσʔλͷऔಘ• ͩΕ͕ɾ͍ͭɾͲ͜ͰɾͳʹΛ͔ͨ͠ΛѲ• ߋ৽ͷࠩʢͳʹΛͲ͏ม͔͑ͨʣΛѲ
Πϯετʔϧcomposer require owen-it/laravel-auditing
ઃఆ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 migrateDPOpHBQQQIQ
ઃఆ2namespace 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
ࢹελʔτ
iduser_typeuser_id eventauditable_typeauditable_idold_valuesnew_valuesurlip_addressuser_agenttagscreated_atupdated_at1App\User1 updated App\Item 2{"name":"\u8ffd\u52a01"}{"name":"\u8ffd\u52a02"}http://localhost:8000/items/2127.0.0.1Mozilla/5.0(Macintosh; IntelMac OSX10_15_3NULL2020-03-2312:20:342020-03-2312:20:342App\User1 created App\Item 3 []{"name":"\u307b\u3052","stock":"10","id":3}http://localhost:8000/items127.0.0.1Mozilla/5.0(Macintosh; IntelMac OSX10_15_3NULL2020-03-2312:21:392020-03-2312:21:393App\User1 deleted App\Item 3{"id":"3","name":"\u307b\u3052","stock":"10"}[]http://localhost:8000/items/3127.0.0.1Mozilla/5.0(Macintosh; IntelMac OSX10_15_3NULL2020-03-2312:51:572020-03-2312:51:57
ϓϩάϥϜͰऔಘ$item = Item::find(1);// ֘σʔλͷશͯͷࢹσʔλ$audits = $item->audits;// ֘σʔλͷ࠷ॳͷࢹσʔλ$first = $item->audits()->first();// ֘σʔλͷۙͷࢹσʔλ$latest = $item->audits()->latest()->first();// ֘σʔλͷࢹσʔλͷIDࢦఆ$audit = $item->audits()->find(1);
ͩΕ͕ ԿΛͨ͠ ͞ΘͬͨϞσϧ ͞Θͬͨσʔλ ͼ;͒ʔ ͋;ͨʔ1 updated App\Item 2{"name":"\u8ffd\u52a01"}{"name":"\u8ffd\u52a02"}
Ͳ͜Ͱ ͲͷIPΞυϨεͰ ͲͷϒϥβͰ ͍ͭhttp://localhost:8000/items/2 127.0.0.1Mozilla/5.0 (Macintosh; Intel MacOS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko)Version/13.0.5 Safari/605.1.152020-03-23 12:20:34
͋ɺσʔλআ͞Εͯ·͢Ͷʔˎˎͷσʔλ͕දࣔ͞Εͯͳ͍ΜͰ͚͢Ͳʁ͑ʂͳʹͯ͠ͳ͍Ͱ͢ΑʂʂόάͰ͔͢ʁʁʁ#͞Μ͕ͷ࣌͝ΖʹεϚϗͰআͯ͠·͢Ͷɻͦ͏Ͱ͔͢ɻ#͞Μʹฉ͍ͯΈ·͢ʂ
એ
Symfony Meetup Kansaiͬͯ·͢
Symfony Meetup Kansai͜Μͳͱ͜Ζ• Symfonyʹ͍ͭͯࡶஊ͢ΔձʢݱࡏΦϯϥΠϯ։࠵ʣ• SymfonyͷܦݧΘͣ• SymfonyͰʙͭͬͨ͘ɺʙͬͯػೳ͔ͭͬͯΈͨɺͱ͍͏ࣄྫհ։ൃख๏ͳͲΛใڞ༗• ࣍6݄͔7݄͘Β͍ʹ։࠵༧ఆ
͋Γ͕ͱ͏͍͟͝·ͨ͠