0

如果我的代码返回 null 那么它会生成此错误。如果代码返回一些数据,那么它工作正常。

控制器

$profile_data= DB::table('partner_prefence')
    ->select('*')
    ->where('profile_id',$profile_id)
    ->first();

return view('partner_prefence',['profile_data' =>  $profile_data]);

视图/刀片

@php($rel_status = explode(',', $profile_data->p_marital_status))

如果$profile->p_marital_status有值,那么就没有问题。只有当它的值为空时才会出现错误。

4

4 回答 4

2

使用optional() https://laravel.com/docs/5.8/helpers#method-optional

如果给定对象为 null,则属性和方法将返回 null 而不会导致错误。

{!! old('name', optional($user)->name) !!}
于 2019-06-22T17:30:03.930 回答
1

根据条目是否对要呈现的页面至关重要,您可以在控制器中执行检查。

$profile_data = DB::table('partner_prefence')
->select('*')
->where('profile_id',$profile_id)
->firstOrFail()

或者允许空值传递给视图并进行三元检查。

$profile_data ? $profile_data->p_marital_status : '';

参考:

三元运算符

检索单个模型

于 2018-10-05T19:07:46.247 回答
1

首先需要检查 $profile_data 是否为空或有一些数据。步骤 2:检查 $profile_data 对象具有名为 p_material_status 的属性。Step3:如果以上两个都成立,那么尝试炸开数据,否则返回一些错误信息,尽量不要炸开数据会更好。

<?php

$data = (($profile_data != null) && property_exists($profile_data->p_marital_status)) ? $profile_data->p_marital_status : null)
if($data){
$rel_status = explode(',', $data);
}else{
    // Something else
}

?>
于 2018-10-05T18:14:16.067 回答
0

只需在这样的句子上使用isset()或:!= null

@php($rel_status = $profile_data ? explode(',', $profile_data->p_marital_status?: '')) : [];
于 2018-10-05T15:30:02.283 回答