当dd()时#Laravel中的#attributes vs #original [英] #attributes vs #original in Laravel when dd()

查看:183
本文介绍了当dd()时#Laravel中的#attributes vs #original的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的Laravel代码中,当我在代码中某处处理记录时,我正在向数组中添加新属性(例如$ obj-> newAttr = someContent),稍后当我对对象进行dd()时,它向我显示了两个数组:#attributes和#original,但是新创建的属性仅显示在#attributes数组中.

In my Laravel code, when I am processing the records somewhere in the code I am adding new attributes to the array (ex. $obj->newAttr=someContent), later when I dd() the object it shows me two arrays: #attributes and #original, but the newly created attribute show up only in #attributes array.

这里是一个示例,当我对对象进行dd()时,得到了#attributes数组:

Here is an example when I dd() the object, I get the #attributes array:

  #attributes: array:21 [▼
"field_name" => "229"
"company_name" => "Maya Dairy"
"seeding_rate" => 115
"id" => 11
"property_id" => 71
"acreage" => "73.80"
"status" => "current"
"dairy_crop_variety_id" => 19
"field_weight" => "1432.39"
"moisture" => "67.00"
"starch" => null
"yield_id" => 50
"crop" => "Wheat: <strong>Sumit 515</strong> @ <strong>21.3 T/c</strong>"
"variety" => "Sumit 515"
"planted_at" => "Nov 10, 2016"
"harvested_at" => "May 1, 2017"
"crop_age" => 172
"cropDateLink" => "Harvested: <a href="#" data-toggle="modal" data-target="#editRowCrop" data-id="11" data-method="PATCH"><strong>May 1, 2017</strong> (172 days)</a>"
"yield" => 21.3
"inputs" => ""
"files" => ""

和原始数组:

  #original: array:16 [▼
"field_name" => "229"
"company_name" => "Maya Dairy"
"seeding_rate" => 115
"id" => 11
"property_id" => 71
"acreage" => "73.80"
"status" => "current"
"dairy_crop_variety_id" => 19
"field_weight" => "1432.39"
"moisture" => "67.00"
"starch" => null
"yield_id" => 50
"crop" => "Wheat"
"variety" => "Sumit 515"
"planted_at" => "2016-11-10"
"harvested_at" => "2017-05-01"

这些数组之间有什么区别?有时,新创建的属性在视图中不可用.我不知道为什么.任何建议都将受到高度赞赏.

What is the difference between these arrays? And sometimes the newly created attributes are not available in view. I am not sure why. Any suggestions are highly appreciated.

推荐答案

$ attributes 包含模型属性的当前版本. $ original 应该包含给定对象的原始值,所以在这里您将找到创建对象的值或从数据库中加载对象的值.

$attributes contains the current version of model's attributes. $original is supposed to contain, well, the original values of given object, so here you'll find the values that object was created with or the values it was loaded with from the database.

注意:将模型保存到数据库后, $ original 值足够聪明,可以用新值进行更新-这个想法是该数组应该反映对象的数据库中的数据.

Note: the $original values are clever enough to be updated with new values once you save the model to the database - the idea is that this array should reflect object's data in the database.

这篇关于当dd()时#Laravel中的#attributes vs #original的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆