#attributes vs #original in Laravel when dd()

2019-06-24 06:11发布

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.

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" => ""

and original array:

  #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.

1条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-06-24 06:41

$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.

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.

查看更多
登录 后发表回答