如何检查对象键是否存在并且不为空,或者它是否是Laravel刀片中foreach循环中的某个值



我在blade中有一个foreach循环,在那里我循环通过项目数组,有些项目有一个名为validation_status的附加键,该键要么是null要么是对象

一个例子:

category: "Storage"
client_id: 6575
created_at: "2019-08-12 15:50:04"
created_by: 233
datasheet: null
deleted_at: null
description: "3erty"
energy_rating: 0
fk_item_type: 83
id: 369
item_model_id: 475
model_number: null
power_consumption: 3
searchable: 1
shared: 1
updated_at: "2019-11-09 17:59:04"
updated_by: 233
validated: 0
validation_status: null
vendor: null
category: "Network"
client_id: 6575
created_at: "2019-07-11 16:04:56"
created_by: 233
datasheet: null
deleted_at: null
description: "2we5"
energy_rating: 0
fk_item_type: 83
id: 357
item_model_id: 470
model_number: null
power_consumption: 55
searchable: 1
shared: 1
updated_at: "2019-11-07 10:29:57"
updated_by: 233
validated: 0
validation_status:
created_at: "2019-11-07 16:08:49"
id: 2
item_id: 357
item_type: "IT_Analysis"
message: null
name: "pending"
updated_at: "2019-11-07 16:08:49"
__proto__: Object
vendor: null

如果validation_status首先存在,并且其名为名称特定值,例如"挂起",我想做一些事情。我怎样才能在刀片中做到这一点?

这是我的尝试,现在else条件被执行为true,所以我的if条件有问题

<p>
@if($item->validation_status && $item->validation_status !== null) 
@if($item->validation_status->name  === "pending" )
<?php echo link_to('admin/items/' . $item->id . '/validation-status' . $item->validation_status->id . '/complete', 'Validate', array('class' => 'btn btn-primary w-full')); ?>
<?php echo link_to('admin/items/' . $item->id . '/validation-status' . $item->validation_status->id . '/documentation-needed', 'Request documentation', array('class' => 'btn btn-primary w-full')); ?>
<?php echo link_to('admin/items/' . $item->id . '/validation-status' . $item->validation_status->id . '/reject', 'Reject', array('class' => 'btn btn-primary w-full')); ?>
@endif
@else
<?php echo Form::submit('Accept and Save!', array('class' => 'btn btn-primary w-full')); ?>
@endif
</p>

它是一个对象,而不是数组。

@php $check = isset($items->validation_status); @endphp

如果属性不存在或为null,isset((将返回false。

所以它非常适合你的情况。

@if($check)
//Execute your code
@endif

更明确的方法是在助手"可选"中使用Laravel构建

例如,如果关系为空,则此代码不会抛出错误

{{ optional($this->category)->name }}

最新更新