我需要保存在对模型及其相关模型执行更新操作后更新的字段数。
假设我有一个用户个人资料编辑表单。在该表单上,我允许用户更新其firtname,lastname,密码。
用户模型还包含电子邮件和密码字段以及其他一些字段。
UserProfile模型也有名字,姓氏和其他字段。
User模型与具有hasOne关联的UserProfiles模型相关联。
还有一些ManyToMany和hasMany关联。
如果用户更新了名字和密码,我需要向用户显示"更改的字段数:2"。
是否有任何Laravel 5方法或包装。
感谢。
答案 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
可能来自请求。