【问题标题】:Laravel-Auditing is not working without any errorsLaravel-审核无法正常工作
【发布时间】:2021-10-13 20:36:34
【问题描述】:

我最近安装了this 软件包并使用指南配置了所有内容,但有些无法正常工作! 它不起作用我的意思是它没有向数据库添加任何内容。我真的不知道我的配置有什么问题,但我已经用指南检查了所有内容 3 次,一切都是正确的,但是......我不知道

config/audit.php:

<?php

return [

    'enabled' => env('AUDITING_ENABLED', true),

    'implementation' => OwenIt\Auditing\Models\Audit::class,

    'user' => [
        'morph_prefix' => 'user',
        'guards'       => [
            'web',
            'api',
        ],
    ],

    'resolver' => [
        'user'       => OwenIt\Auditing\Resolvers\UserResolver::class,
        'ip_address' => OwenIt\Auditing\Resolvers\IpAddressResolver::class,
        'user_agent' => OwenIt\Auditing\Resolvers\UserAgentResolver::class,
        'url'        => OwenIt\Auditing\Resolvers\UrlResolver::class,
    ],

    'events' => [
        'created',
        'updated',
        'deleted',
        'restored',
        'gold_mailed' => 'goldMailed',
        'invited' => 'clientInvited',
    ],

    'strict' => false,

    'timestamps' => false,

    'threshold' => 0,

    'driver' => 'session',

    'drivers' => [
        'eloquent' => [
            'table'      => 'audits',
            'connection' => null,
        ],
    ],

    'console' => true,
];

我要审核的模型:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use OwenIt\Auditing\Contracts\Auditable;

use App\Models\Expansion;
use App\Models\Audit;

class Setting extends Model implements Auditable
{
    protected $table = 'settings';

    use \OwenIt\Auditing\Auditable;


    protected $fillable = [
      'expansion_id', 'season', 'advertiser_app', 'pvp_app', 'raid_app', 'version'
    ];

    protected $auditInclude = [
       'expansion_id', 'season', 'advertiser_app', 'pvp_app', 'raid_app', 'version'
   ];

    public function Expansion()
    {
      return $this->hasOne(Expansion::class, 'id', 'expansion_id');
    }
}

web.php:

Route::post('/setting' , 'Admin\SuperAdminController@saveSetting')->middleware('superadmin')->name('admin_save_setting');

控制器:

public function saveSetting(Request $request)
  {
    $sql = Setting::where('id', 1)->update([
      'expansion_id' => $request['expansion_id'],
      'season' => $request['season'],
      'advertiser_app' => $request['advertiser_app'],
      'pvp_app' => $request['pvp_app'],
      'raid_app' => $request['raid_app'],
      'version' => $request['version']
    ]);
    if ($sql) {
      toastr()->success('Settings successfully updated.');
      return redirect()->back();
    }
    toastr()->error('Something went wrong!');
    return redirect()->back();
  }

我不知道你需要什么信息,但我认为这就足够了

我认为我的问题是配置文件中的“驱动程序”,我不知道这是否正确

【问题讨论】:

    标签: laravel package auditing


    【解决方案1】:

    [更新]

    根据您显示的控制器代码,它不起作用,因为您的代码是使用 Builder 样式调用的,并且该包仅在使用 Eloquent 样式调用时才有效。

    Documentation link

    所以,也许您需要将代码更改为:

    $setting = Setting::where('id', 1)->firstOrFail();
    $setting->update([
      'expansion_id' => $request['expansion_id'],
      'season' => $request['season'],
      'advertiser_app' => $request['advertiser_app'],
      'pvp_app' => $request['pvp_app'],
      'raid_app' => $request['raid_app'],
      'version' => $request['version']
    ]);
    

    【讨论】:

    • 是的,我做了这一步
    • audits 表是否已经创建? @AlirezaBehnamnik
    • 是的,一切都由指南完成
    • 你试过把'driver'改成database吗? @AlirezaBehnamnik
    • 是的,将 'session' 和 'eloquent' 都更改为 'database' 但什么也没发生 -_-
    【解决方案2】:

    现在我有另一个问题-_-

    这是我的控制器:

    $sql = Raid::findOrFail($request['id']);
    $sql = $sql->update($request->all());
    

    我的表中有一个数组,更新后的值会是这样的:

    "{\"Plate\":0,\"Cloth\":0,\"Mail\":0,\"Leather\":0}"
    

    但应该是:

    {"Plate":"0","Cloth":"0","Mail":"0","Leather":"0"}
    

    所以我会得到一个错误 在此之前,我是这样更新的,没关系:

    $sql = Raid::where('id', $request['id'])->update($request->all());
    

    这是我的模式(traders 和 class_traders 是我遇到问题的字段):

        use SoftDeletes;
    
        use \OwenIt\Auditing\Auditable;
    
        protected $table = 'raid';
    
        protected $dates = ['date_and_time','deleted_at'];
    
        protected $fillable = [
          'admin_id', '....
        ];
    
        protected $casts = [
            'bosses' => 'array',
            'traders' => 'array',
            'class_traders' => 'array',
            'boosters' => 'array',
        ];
    

    【讨论】:

    • 考虑将其作为 Stackoverflow 的另一个问题,以便其他人可以看到。此外,您只能接受 1 个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 2021-03-14
    • 2021-04-06
    • 2018-01-17
    • 2018-04-24
    • 2017-10-15
    相关资源
    最近更新 更多