繁体   English   中英

获取集合内对象的值

[英]Get value of an Object inside a Collection

我在Laravel应用程序中使用Yajra提供的DataTables as Service。

我有一个这样的收藏:

Collection {#1178
    #items: array:2 [
    0 => array:7 [
      "email" => "user1@example.com"
      "id" => 6
      "emailBlacklisted" => false
      "smsBlacklisted" => false
      "modifiedAt" => "2019-02-05T17:20:17.723+01:00"
      "listIds" => array:2 [
        0 => 2
        1 => 3
      ]
      "attributes" => {#1139
        +"NAME": "Doe"
        +"FIRSTNAME": "John"
      }
    ]
    1 => array:7 [
      "email" => "user2@example.com"
      "id" => 1
      "emailBlacklisted" => false
      "smsBlacklisted" => false
      "modifiedAt" => "2019-02-05T21:12:04.094+01:00"
      "listIds" => array:1 [
        0 => 2
      ]
      "attributes" => {#1143}
    ]
  ]
}

在刀片视图中,我使用{{$ email}}->简单显示电子邮件值

我认为这对您来说是一个非常简单的问题...

但是我无法显示attribute键的值。 (我想显示NAME:Doe)。 ->属性是我集合中的一个对象。

感谢您帮助我解锁...

如果我理解正确,则希望能够显示键和属性值。

如果使用刀片,则可以尝试扩展的foreach循环:

@foreach($attributes as $key => $value)
    {{ $key }}: {{ $value }}
@endforeach

假设您已经可以访问每个模型的属性,例如$item->email或本例中的$item->attributes 如果需要,可以执行@foreach($item->attributes as $key => $value)来启动它。


如果您只想显示特定值,请使用null-coalesce运算符??

$item->attributes['NAME'] ?? ''

您可以在其他地方的逻辑中将此表达式与任何可能为null的表达式一起使用:

// the fallback does not have to be a string
$person = Person::find($id) ?? Person::first();

// it can be chained
$value = $parameter ?? $localDefault ?? $globalDefault;

如果找不到NAME,它将退回到?? ,在上面的示例中为空字符串。 这是一个很好的技巧,可以避免在属性不存在时出现任何错误。 它与三元检查是否为null的作用相同:

($item->attributes['NAME'] !== null) ? $item->attributes['NAME'] : '';

这显然很麻烦,因此null运算符派上用场!

好的,@ GoogleMac让我走上了正轨。 实际上,由于NAME属性并不总是存在,因此我必须使用

    isset()

功能与否

    !== NULL

    {{ isset($attributes->NOM) ? $attributes->NAME : 'NC' }}

该代码运行良好。

谢谢@GoogleMac和@Davit

您应该简单地执行以下操作:

@foreach($collection as $item)
  {{$item->NAME}}
@endforeach

注意:NAME必须是attribute变量中的键。

属性变量是受保护的,因此您不能直接从对象外部引用它。 如果通过拥有它的对象引用它,该值将被自动映射。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM