我在Laravel应用程序中使用Yajra提供的DataTables即服务。
我有一个这样的收藏:
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)。 ->属性是我集合中的一个对象。
感谢您帮助我解锁...
答案 0 :(得分:0)
如果我理解正确,则希望能够显示键和属性值。
如果您使用刀片,则可以尝试扩展的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,它将退回到??
之后的名称,在上面的示例中该字符串为空。这是一个很好的技巧,可以避免在属性不存在时出现任何错误。它与三元检查是否为空的作用相同:
($item->attributes['NAME'] !== null) ? $item->attributes['NAME'] : '';
那显然很麻烦,因此null-coalesce运算符派上用场了!
答案 1 :(得分:0)
好吧,@ GoogleMac让我走上了正轨。 实际上,由于NAME属性并不总是存在,因此我必须使用
isset()
功能而非
!== NULL
使用
{{ isset($attributes->NOM) ? $attributes->NAME : 'NC' }}
代码效果很好。
谢谢@GoogleMac和@Davit
答案 2 :(得分:-1)
您应该简单地执行以下操作:
@foreach($collection as $item)
{{$item->NAME}}
@endforeach
注意:NAME必须是attribute变量中的键。
attribute变量是受保护的,因此您不能直接从对象外部引用它。如果通过拥有它的对象引用它,该值将被自动映射。