MyObject {#300 ▼
+dataType: DataType {#323 ▶}
+data: Course {#328 ▼
#connection: "mysql"
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:32 [▶]
#original: array:32 [▶]
#changes: array:2 [▼
"prop" => 1
"updated_at" => "2018-08-08 11:50:39"
]
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#guarded: array:1 [▶]
}
}
我在屏幕上打印这个对象使用
dd($args->data);
现在我需要检查内部是否有更改 然后我尝试通过以下方式访问该属性:
dd($args->data->changes);
或
dd($args->data['changes']);
但是,除了您可以在上面看到的数组之外,我总是得到一个 NULL。 如何访问"更改"?
您的数据似乎是一个雄辩的模型。changes
属性是模型类的受保护成员。因此,您无法从外部访问它。
在dd
函数的输出中,公共成员以+
字符为前缀,受保护成员以#
字符为前缀。您可以查看这些前缀以了解要访问的属性的可见性。
若要获取 Eloquent 模型的更改,请使用getChanges()
方法。在您的情况下,您应该编写如下代码:
dd($args->data->getChanges());
试试这个:
$args->data->getChanges();
首先,检查对象是否存在。如果对象存在,则尝试访问其key
。所以,这是代码:
$changes = $args->data ? $args->data->changes : [];
if(count($changes)>0){
// iterate through the `$changes` to make changes
}
尝试使用 foreach 循环
foreach($args as $arguslist){
$mainarray = $argulist->changes;
$arrayattr = $argulist->changes->prop;
}