###前提・実現したいこと
Laravel5.3でモデルによるレコード更新時に更新したカラムの更新履歴を記録するAPIを作成しています。
変更前と変更後のモデルを比較して対象カラムを特定する方法はないでしょうか?
###テーブル
StaffテーブルにはStaffCodeとStaffName,Bushoというカラムがあり、StaFFCode='ABC'のBushoには’総務'と登録されているとします。
また、StaffHistoryというテーブルにはcolumn,Before,Afterというカラムがあり、columnには変更したカラム名、Beforeには変更前の値、Afterには変更後の値が入る想定
###該当のソースコード
※$afterにはStaffテーブルのGet()と同じ構成で、Bushoのデータに’経営企画’となったレスポンスが来ているとします。
$before = Models\Staff::where('StaffCode','ABC')->first();
$after->save();
if($before->StaffName<> $after->StaffName){
$history = new Models\StaffHistory()
$history->column = 'StaffName';
$history->Before = $before->StaffName;
$history->After = $after ->StaffName;
$history->save();
}
if($before->Busho <> $after->Busho){
$history = new Models\StaffHistory()
$history->column = 'Busho';
$history->Before = $before->Busho ;
$history->After = $after ->Busho ;
$history->save();
}
###実現したいこと
$beforeと$afterのカラムを一つづつ比較ではなく、モデルで比較し、変更のあったカラムの変更履歴が作成できるようにしたい。
また、他のテーブルの履歴も付けられるように拡張したいと考えており、実現するためにモデルに登録されているすべてのキー名取得、キー数取得が必要だと思いましたが方法がよくわかりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/27 10:55
2017/02/28 00:15
2017/02/28 06:54