#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
таблица уже создана? @AlirezaBehnamnik3. да , все сделано в точности с помощью руководства
4. ты пробовал переодеться
'driver'
воdatabase
что-нибудь ? @AlirezaBehnamnik5. да , измените «сеанс» и «красноречивый» на «база данных», но ничего не произошло -_-
Ответ №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 ответ.