php - 更新模型时,Laravel VentureCraft 可修改无法在 Laravel 5.5 上运行
问题描述
我使用了这个名为revisionable的包,所以我尝试将它添加到我的package.json
并运行迁移,一切正常。
但是当我尝试创建记录然后更新它们时,它不会填写修订表吗?
我正在使用"venturecraft/revisionable": "^1.28",
和Laravel 5.5
这是我模型中的代码
所以这就是我在我的模型中所做的
use Venturecraft\Revisionable\Revisionable;
use Venturecraft\Revisionable\RevisionableTrait;
class AnalysisRequest extends Revisionable
{
use SoftDeletes;
use RevisionableTrait;
protected $revisionEnabled = true;
protected $revisionCleanup = true;
protected $historyLimit = 100; //Stop tracking revisions after 500 changes have been made.
protected $dontKeepRevisionOf = array(
'client_id', 'service_id', 'categories_id', 'methodologies_id', 'current_version', 'due_date'
);
protected $keepRevisionOf = array(
'sample_description',
'special_instruction',
'status',
'rushable'
);
我什么时候做错了?
有人可以为我解释一下。提前致谢。
解决方案
对于那些在那里使用这个包的人。新版本的Laravel没有问题。
问题在于使用laravel雄辩的方法,尤其是更新方法。
所以不要像下面这个例子那样更新模型。
$analysis_request = AnalysisRequest::where('id', $input['id'])->update([
'client_id' => $input['client_id'],
'sample_description' => $input['sample_description'],
'special_instruction' => $input['special_instruction'],
'rushable' => $input['rushable'],
'status' => 'for_testing'
]);
您必须这样做才能对模型进行修订。见下文
$analysis_request = AnalysisRequest::where('id', $input['id'])->first();
$analysis_request->client_id = $input['client_id'];
$analysis_request->sample_description = $input['sample_description'];
$analysis_request->special_instruction = $input['special_instruction'];
$analysis_request->status = 'for_testing';
$analysis_request->save();
如您所见,我使用该方法first()
来获取我的模型并使用更新它如果您不使用.save()
save()
first()
github中问题的参考链接。
我知道这样很难做到。但是现在,如果您想在创建修订时让您的生活更轻松,而不是自己手动进行,那么您将被迫这样做。但是,嘿,这仍然取决于您的情况。
我希望作者在下一个版本中尽快解决这个问题。
推荐阅读
- delphi - Delphi 无法从 VertScrollBox 中删除子级
- kubernetes - Kubernetes Dashboard 静态密码文件无法列出
- r - 确定匿名函数中函数的命名空间
- android - 无法在 Android Studio 中访问 Context.BAKUP_SERVICE
- r - 处理 .csv 文件中的 NA 值
- firebase - 使用 Firebase 存储上传文件失败时捕获错误
- xaml - 尝试使用发布而不是调试运行时崩溃 - 没有错误
- python - pytest中请求超时失败时显示的所有回溯
- javascript - 如何防止 YouTube js 调用减慢页面加载速度
- javascript - 如何在 React 中通过类名访问所有 dom 元素?