arrays - 如何使用 Spatie/Activitylog 根据 id 获取模型属性名称?
问题描述
我正在尝试使用 Spatie/Activitylog activity_log 表的属性属性基于 Task 模型的 employee_id 获取员工姓名。
我的模型:
use LogsActivity;
protected $fillable = ['id','employee_id', 'name', 'description'......];
protected static $logAttributes = ['id','employee_id','name', 'description'......];
protected static $logFillable = true;
protected static $logUnguarded = true;
我的控制器:
{
$activity = Activity::orderBy('id', 'DESC')->paginate(15);
return view('adminlte::home', ['activity' => $activity]);
}
我的刀片:
@foreach($activity as $act)
{{$act->changes['attributes']['employee_id']}}
@endforeach
属性字段中保存的记录:
{"attributes":{"id":170,"employee_id":"[\"1\",\"2\"]","name":"test","description":"test",......}}
此外,在我的刀片中,结果是:
|employee_id | name | description| ...
|------------|------------|------------|--------
|["1","2"] | test | test | ....
问题是,如何根据employee_id 获取Name 字段。例如,在这种情况下,Jon, David(not their IDs(["1","2"])。所以,我想获取名称而不是 ID。
先感谢您。
解决方案
我会从数据库中获取它们
1)创建一个ID列表并获取它们。
$employees = Employee::whereIn('id', $activity->pluck('employee_id')->flatten())
->get()
->mapWithKeys(function ($employee) {
return [$employee->id => $employee];
});
2)发送到前端
return view('adminlte::home', ['activity' => $activity, 'employees' => $employees]);
3) 使用映射来显示名称
@foreach($activity as $act)
@foreach($act->changes['attributes']['employee_id'] as $employeeId)
{{ $employees[$employeeId] }},
@endforeach
@endforeach
推荐阅读
- list - Haskell:从输入列表创建列表元组
- html - 如何访问没有附加任何类或 id 的类的子 div = 结果
- javascript - PixiJS 只绘制一定数量的矩形?
- html - HTML解析问题:无法查看和解析webhallen.com的完整源代码
- tableau-api - 如何在画面中设置日月计算?
- html - 链接在视频背景后面
- c++ - C++ CImg 从数组创建图像
- javascript - 由于重复的 babel-polyfill 实例,加载供应商 cdn 脚本时出错
- typescript - JestJs 不等待调用包装 async/await
- google-domains - 使用 TXT 记录的 Google 域验证失败