【问题标题】:Laravel Activity Log won't work on UpdateLaravel 活动日志不适用于更新
【发布时间】:2021-11-20 04:22:45
【问题描述】:

我正在使用 SPATIE laravel-activitylog 我按照所有说明进行操作,但它仍然只记录 Create 函数而不是在 Modal 上使用它时更新

我的模态

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;

class Contact extends Model
{
    use HasFactory, LogsActivity;
    protected $fillable = [
        'comp_name',
        'cont_name',
        'cont_email',
        'cont_number',
        'created_by',
        'updated_by',
    ];
        // spatie activitylog
    protected static $logFillable = true;
    protected static $logOnlyDirty = true;
    protected static $logName='users'; // default
}

我的控制器

 Contact::where('id',$input['id'])->update($data);
 $retrnArray = array('status'=>1,'msg'=>'Updated Successfully');

【问题讨论】:

  • 您正在更新新信息,而不仅仅是没有更改的相同模型?
  • @NicklasKevinFrank 我正在更新一个号码

标签: php laravel logging laravel-8 activitylog


【解决方案1】:

似乎默认的日志选项不包括所有模型的字段。您可以描述需要记录的字段或使用通配符为每个字段更改触发记录。根据documentation 示例(在您的模型类中):

public function getActivitylogOptions(): LogOptions
{
    return LogOptions::defaults()->logOnly(['*']);
    // To avoid hardcoding you could use logAll() method
    // return LogOptions::defaults()->logAll();
}

【讨论】:

  • 运气不好,它仍然无法正常工作。另外,我使用了“logAll()”
【解决方案2】:

我已更改查询。我们应该使用 Eloquent 查询。

$contact = Contact::find($input['id']);
$contact->cont_email = $input['cont_email'];
$contact->cont_number = $input['cont_number'];           
$contact->save();

$retrnArray = array('status'=>1,'msg'=>'Updated Successfully');

【讨论】:

  • 有点奇怪,我们需要先使用“查找”,而不仅仅是简单的抓取和“更新”,但它确实有效......谢谢!
【解决方案3】:

在 DB 中写入但 在 ActivityLogs 中写入的 更新 将如下所示:

User::where("id", 1)->update($data);

在 DB 中写入和 ALSO 在 ActivityLogs 中写入的 更新 将如下所示:

User::where("id", 1)->first()?->update($data); //if you are using php >= 8
User::where("id", 1)->firstOrFail()->update($data); // Good using php >= 5.6
User::find(1)?->update($data); //This also works as find("your id") also returns the model that it was able to found, it also returns null so check it on null or use nullsafe operator.

加载模型以正确生成 ActivityLogs 很重要。

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    相关资源
    最近更新 更多