如何使用laravel中的( updated_at )时间戳来获取更新表单的最后一个人的用户名,以及最佳的逻辑或方法是什么?是否可以仅在刀片中使用?或者我应该将代码放在我的控制器中吗?
示例: 已更新:2018年6月13日 UpdatedBy:用户名
目前我只能在我的刀片中使用此代码来获取更新日期
Updated:{{ date('d-M-Y', strtotime($leads->updated_at))}}
答案 0 :(得分:0)
您的数据库表中需要以下两列:updated_at
和last_updated_by
在您的控制器中,当您更新该记录时,添加正在last_updated_by
字段中更新记录的用户的ID。
注意:这将仅显示上次由用户ID更新。
如果你想存储每个updated_by,那么创建一个新表:
table: update_timeline
postid : user_id : updated_date
现在,您可以对这两个表使用连接查询,并根据需要更新每个表。
答案 1 :(得分:0)
数据库表
CREATE TABLE `leads` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `lead_history` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`lead_id` int(11) unsigned DEFAULT NULL,
`updated_by` int(11) unsigned DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
模型
class Lead extends Model {
public function history()
{
return $this->hasMany(LeadHistory::class,'lead_id');
}
}
class LeadHistory extends Model{
public function lead()
{
return $this->belongsTo(Lead::class);
}
public function user()
{
return $this->belongsTo(User::class, 'updated_by');
}
}
现在获取潜在客户
$leads = Lead::all(); //for demo purpose, always use pagination based results or fetch with condition
这是模板渲染
@foreach ($leads as $lead)
<p>This is your lead: {{ $lead->name }}</p>
@if ($lead->history)
<label>Lead Updated By:</label>
<ul>
@foreach ($lead->history as $history)
<li>{{$history->user->username}}</li>
@endforeach
</ul>
@endif
@endforeach
假设您的用户表包含&#34;用户名&#34;字段
每当用户更新潜在客户时,您只需要在updated_by字段中使用该userId在潜在客户历史记录表中插入记录
答案 2 :(得分:0)
您可以将模型更改存储在单独的模型中,例如Activity
。此模型可以与模型建立多态关系,执行活动的用户的外键以及操作类型(即create
,update
,delete
)。
然后,您可以创建一个特征,应用于每次创建,更新或删除模型时自动创建活动记录的模型:
trait Auditable
{
public static function bootAuditable()
{
static::created(function ($model) {
$model->recordActivity('create');
});
static::updated(function ($model) {
$model->recordActivity('update');
});
static::deleted(function ($model) {
$model->recordActivity('delete');
});
}
protected function recordActivity($operation)
{
$activity = new Activity([
'operation' => $operation,
'user_id' => Auth::id(),
]);
$activity->model()->associate($this);
$activity->save();
}
}
然后,您就可以粗略地列出模型的操作,即
......等等。
答案 3 :(得分:0)
我已经为created_by,updated_by审计跟踪创建了一个程序包。您可以在https://github.com/insenseanalytics/laravel-user-audit-trails
签出