如何访问对象属性?


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;
}

相关内容

  • 没有找到相关文章

最新更新