如何在Laravel 5.1中获取更新字段的总数?

3

我需要在对一个模型及其相关模型执行更新操作后保存更新的字段数。

假设我有一个用户个人资料编辑表单。在该表单上,我允许用户更新名字、姓氏和密码。

用户模型具有电子邮件地址和密码字段以及其他一些字段。

用户个人资料模型也有名字、姓氏和其他字段。

用户模型与具有hasOne关联的UserProfiles模型相关联。

还有一些ManyToMany和hasMany关联。

如果用户更新了名字和密码,我需要向用户显示“更改字段数:2”。

是否有Laravel 5的方法或软件包可以实现这一点。

谢谢。

1个回答

2
您可以使用 Eloquent 模型的 getDirty() 方法,代码如下:
$data = ['email' => 'email@example.com', 'name' => 'John Doe'];
$user = User::find(1);

$user->fill( $data );

if ( !$user->isDirty() ) {
    //NO DATA CHANGED
}

$numberOfChanges = count( $user->getDirty() );
getDirty()方法将返回一个模型中已更改属性的数组,因此当您计算数组的大小时,您将知道有多少个字段被更改了。
请注意,我仅以User模型为例,并且$data可能来自请求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接