#attributes vs #original in Laravel when dd()(dd() 时 Laravel 中的 #attributes 与 #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 与 #original的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:dd() 时 Laravel 中的 #attributes 与 #original
基础教程推荐
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- HTTP 与 FTP 上传 2021-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- 使用 PDO 转义列名 2021-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01