我正在使用owen-it / laravel-auditing来记录产品价格变化的历史。但是在更新价格时我遇到了错误。
OwenIt \ Auditing \ Exceptions \ AuditingException无效 UserResolver实现
价格确实已更新,但历史记录未在数据库中更新
Products.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use OwenIt\Auditing\Contracts\Auditable;
use OwenIt\Auditing\Contracts\UserResolver;
class Products extends Model implements Auditable, UserResolver
{
use \OwenIt\Auditing\Auditable;
protected $table = 'products';
protected $fillable = ['name','price','season','category','description','stock','image'];
protected $auditInclude = [
'name',
'price',
];
public static function resolveId()
{
return Auth::check() ? Auth::user()->getAuthIdentifier() : null;
}
}
答案 0 :(得分:1)
从我所看到的情况来看,@ Faiez正在使用审核包的版本4.x或5.x,与新版{{3}相比,它会以不同方式注册User
解析器}版本,这是@btl正在回答的问题。
您必须使用以下内容更新audit.php
配置文件,以使其正常工作:
return [
// ...
'user' = [
// ...
'resolver' => App\Products::class,
// ...
],
// ...
];
但是,我建议你将User
解析器移动到另一个类(也许是User
模型?),因为将它放在那里是没有意义的。 Products
模型。
如有疑问,请查看6.x
答案 1 :(得分:0)
您需要在config/audit.php
文件中设置解析程序类:
'resolver' => [
'user' => App\Products::class,
'ip_address' => OwenIt\Auditing\Resolvers\IpAddressResolver::class,
'user_agent' => OwenIt\Auditing\Resolvers\UserAgentResolver::class,
'url' => OwenIt\Auditing\Resolvers\UrlResolver::class,
],