有人能给我解释一下在对数组使用print_r时,laravel中的attributes:protected array和original:protected array之间的区别吗?
发布于 2017-02-03 19:54:33
当Model从表中读取数据时,数组“original”和“attribute”包含相同的数据。当您更改属性值(例如$user->name='John')时,更改仅反映在'attributes‘数组上,但'original’保持不变。(因此而得名)。
当模型上的update()被调用时,方法通过比较两个数组来检查发生了什么变化,并只为发生变化的字段构造查询。因此,在$users->name change的情况下,Laravel不会创建此代码:
UPDATE users set name = 'John', password = 'pass', email = 'email' where id = 1但这一点:
UPDATE users set name = 'John' where id = 1这可能不是Eloquent使用'original‘数组的唯一方式。当您需要了解Eloquent背后的情况时,我发现clockwork很有帮助。
https://stackoverflow.com/questions/42011429
复制相似问题