如何访问对象属性?

时间:2018-08-08 11:48:43

标签: laravel object laravel-5 laravel-5.5

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,而不是上面看到的数组。 如何访问“更改”?

4 个答案:

答案 0 :(得分:1)

尝试一下:

RGB: (0, 234, 234)

答案 1 :(得分:1)

首先,检查对象是否存在。如果存在,则尝试访问其key。因此,代码如下:

$changes = $args->data ? $args->data->changes : [];
if(count($changes)>0){
 // iterate through the `$changes` to make changes 
}

答案 2 :(得分:1)

您的数据似乎是一种雄辩的模型。 changes属性是模型类的受保护的成员。因此,您不能从外部访问它。

dd函数的输出中,公共成员以+字符为前缀,受保护成员以#字符为前缀。您可以看到这些前缀,以了解要访问的属性的可见性。

要获取Eloquent模型的更改,请使用getChanges()方法。对于您的情况,您应编写如下代码:

dd($args->data->getChanges());

答案 3 :(得分:0)

尝试使用foreach循环

foreach($args as $arguslist){
$mainarray = $argulist->changes;
$arrayattr = $argulist->changes->prop;
}