Laravel-Аудит не работает без каких-либо ошибок

#laravel #package #auditing

Вопрос:

Я недавно установил этот пакет и настроил все с помощью руководства, но кое-как это не работает! Под тем, что это не работает, я подразумеваю, что оно ничего не добавляет в базу данных. Я действительно не знаю, что не так с моими настройками, но я проверил все с помощью руководства 3 раза, и все правильно, но… Я не знаю

config/audit.php:

 <?php

return [

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

    'implementation' => OwenItAuditingModelsAudit::class,

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

    'resolver' => [
        'user'       => OwenItAuditingResolversUserResolver::class,
        'ip_address' => OwenItAuditingResolversIpAddressResolver::class,
        'user_agent' => OwenItAuditingResolversUserAgentResolver::class,
        'url'        => OwenItAuditingResolversUrlResolver::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 AppModels;

use IlluminateDatabaseEloquentModel;
use OwenItAuditingContractsAuditable;

use AppModelsExpansion;
use AppModelsAudit;

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

    use OwenItAuditingAuditable;


    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' , 'AdminSuperAdminController@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();
  }
 

Я не знаю, какая информация вам нужна, но я думаю, что этого достаточно

Я думаю , что моя проблема в «драйвере» в файле конфигурации, я не знаю, правильно это или нет

Ответ №1:

[ОБНОВЛЕНО]

Основываясь на показанном вами коде контроллера, это не сработало, потому что ваш код вызывается с использованием Builder стиля, а пакет работает только тогда, когда он вызывается с использованием Eloquent стиля.

Ссылка на документацию
Строитель против Красноречивый

Итак, возможно, вам нужно изменить свой код на:

 $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']
]);
 

Комментарии:

1. да, я сделал этот шаг

2. audits таблица уже создана? @AlirezaBehnamnik

3. да , все сделано в точности с помощью руководства

4. ты пробовал переодеться 'driver' во database что-нибудь ? @AlirezaBehnamnik

5. да , измените «сеанс» и «красноречивый» на «база данных», но ничего не произошло -_-

Ответ №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());
 

и это мой режим (трейдеры и class_traders-это поля, с которыми у меня проблемы):

     use SoftDeletes;

    use OwenItAuditingAuditable;

    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',
    ];
 

Комментарии:

1. Подумайте о том, чтобы сделать это еще одним вопросом Stackoverflow, чтобы другие люди могли его увидеть. Кроме того, вы можете принять только 1 ответ.