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

时间:2016-06-30 02:33:25

标签: php laravel-5.1

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

假设我有一个用户个人资料编辑表单。在该表单上,我允许用户更新其firtname,lastname,密码。

用户模型还包含电子邮件和密码字段以及其他一些字段。

UserProfile模型也有名字,姓氏和其他字段。

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

还有一些ManyToMany和hasMany关联。

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

是否有任何Laravel 5方法或包装。

感谢。

1 个答案:

答案 0 :(得分: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()将返回模型更改属性的数组,因此当您计算数组的大小时,您将确切地知道有多少字段已更改。

请注意,我仅使用用户模型作为示例,$data可能来自请求。