- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在处理 Laravel 5.8 项目,在更新模型时注意到,即使模型没有任何更改,我也会将相同的模型保存回数据库中。
为了避免这种情况,我的想法如下:
$model = Model::find($id);
$model->fill([
"name" => $request->name,
...
]);
if($model->isDirty){
$model->save()
}
问题是,即使我没有更改模型中的值,我仍然会进入 if()
条件并保存模型。我尝试使用一个临时变量并调试了 $model->getChanges()
,我得到了一个空数组。
这是预期的行为吗?
最佳答案
是有区别的。
是脏代码
/**
* Determine if the model or any of the given attribute(s) have been modified.
*
* @param array|string|null $attributes
* @return bool
*/
public function isDirty($attributes = null)
{
return $this->hasChanges(
$this->getDirty(), is_array($attributes) ? $attributes : func_get_args()
);
}
getChanges() 和 getDirty 代码
/**
* Get the attributes that have been changed since last sync.
*
* @return array
*/
public function getDirty()
{
$dirty = [];
foreach ($this->getAttributes() as $key => $value) {
if (! $this->originalIsEquivalent($key, $value)) {
$dirty[$key] = $value;
}
}
return $dirty;
}
/**
* Get the attributes that were changed.
*
* @return array
*/
public function getChanges()
{
return $this->changes;
}
总结一下。
这篇文章中使用的答案:https://laracasts.com/discuss/channels/eloquent/observer-column-update-isdirty-or-waschanged
isDirty (and getDirty) is used BEFORE save, to see what attributes were changed between the time when it was retrieved from the database and the time of the call, while wasChanged (and getChanges) is used AFTER save, to see that attributes were changed/updated in the last save (from code to the database).
进入 isDirty 检查的原因是在检查之前执行 fill()。我认为这将自动填充 updated_at。因此,实际上,在这种情况下,模型已经更改。
关于laravel-5 - Eloquent `isDirty()` 和 `getChanges()` 之间的不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58312036/
在我的应用程序中,我正在更新与患者实体 1:1 关联的对象凭证。在我的 Controller 中,我调用“voucherInstance.properties = params”来绑定(bind)新值
我正在使用 Grails 3.2: class Training{ boolean clientChanged = false static transients = ['client
我正在寻找一种有效的(代码方面和运行时方面)方法来识别 JavaBean 对象是否已更改。 我正在考虑保存该类的克隆,可以根据需要与类实例进行比较。这与 CSLA.net 使用的策略类似。 问题是,是
什么是存储集合快照以供后续 IsDirty 检查的好方法(快速、高效等)? 干杯, 贝瑞尔 最佳答案 如果您只想保存快照并检查列表的大小是否发生变化(添加/删除项目) var snapshot = n
我有一个包含以下函数的 BLL 基类: public bool IsDirty { get; protected set; } internal void SetField(ref T
我有一个域类 Enquiry,其中自动生成主键 id。我有 enquiry_no 这不是主键,但我想让它成为一个唯一的自动递增字段,我需要在我的 gsp 页面中显示它。 我已经阅读了 grails 文
我正在使用 isDirty 检查是否输入了表单值(并基于此禁用其他内容)。 import { isDirty } from 'redux-form'; const mapStateToProps =
我有一个 WPF 应用程序并且正在使用 NHibernate。我的问题是如何管理变革? 我不完全确定 IsDirty 的行为。 这个link描述了我的问题。问题列出了当前环境的所有信息。 最佳答案 您
我正在开发一个系统,用户可以通过 GUI 编辑现有对象(准确地说是“过滤”域对象)。作为 UI 提示,我们只希望在用户确实修改了对象的某些内容时启用保存按钮。我想知道是否有人对这个问题有任何经验,以及
有没有人有他们认为特别有用的 IsDirty 实现?理想情况下,我希望支持撤消,但不必引入像 CSLA 这样的框架。我也更喜欢支持组合而非继承的实现。 我现在正在使用带有 ViewModel 倾斜的
我有一个可观察的供应商集合,我想将它们加载到 GridView 中,然后让用户编辑供应商的任何相关信息。我的问题是我不确定如何为供应商(模型)上可以更改的每个属性实现 IsDirty 字段。我有这样创
我正在查看 Xamarin Sport 应用程序代码,并试图了解他们在其中所做的一些很酷的事情。我无法理解 IsDirty正被用于确切地。它被定义 here并实现here并在许多地方使用,例如here
首先,我对 Laravel 不太熟悉(或者对“脏”这个词)不太熟悉。 我偶然发现了这行代码 - if ($this->isDirty('status')) { if (Notification
我有一个用 MVC4 编写的单页应用程序,它使用 pjax()将 html 推送到我页面中的各个 s 中。我有一个子表单,允许用户编辑数据,如果用户更改数据,则会在 javascript 中设置 is
在 MFC 的 CField 类中使用名称为 IsDirty() 的函数背后的原理是什么。 最佳答案 术语“干净”和“脏”在数据处理中非常常用。当您从数据库或文件系统等持久存储中接收到某个数据结构的拷
我正在尝试跟踪 JPA OneToMany 关联中的更改,以便通知订阅者某个对象的区域(这些关联之一)已更改的事件。我首先尝试对 List 进行专门化,它可以感知变化。 @OneToMany(casc
基本上就是标题所说的。当我提交表单时,我正在检查登录是否成功,如果没有,它会显示一条消息。但是,当用户开始键入时,我希望此消息消失。 有点假设 isDirty提交表单后将被清除,但它仍然是脏的。我可以
今天,我开始使用 react-hook-form 并且 isDirty 变量对我来说似乎很奇怪。尽管仅将焦点给予任何输入元素,但它始终为真。 我希望只有当输入元素的值发生变化时,isDirty 才应该
今天,我开始使用 react-hook-form 并且 isDirty 变量对我来说似乎很奇怪。尽管仅将焦点给予任何输入元素,但它始终为真。 我希望只有当输入元素的值发生变化时,isDirty 才应该
给定一个使用 WPF 双向绑定(bind)到 EF 实体对象的标准记录编辑表单 IsDirty 处理如下 entity.PropertyChanged += new System.ComponentM
我是一名优秀的程序员,十分优秀!