首页 > 解决方案 > Laravel 知道函数内部的变量,但不知道返回

问题描述

我正在使用 laravel excel 导出我的数据。在 map 函数内部,$credit 和 $debit 变量但是在返回它们时会引发错误。

错误是:

试图获取非对象的属性“名称”

这是我的地图功能:

public function map($partner): array
{
    $credit = Bank::whereId($partner->credit)->first(); // also used: Bank::find($partner->credit);
    $debit = Bank::whereId($partner->debit)->first();
    dd($credit->name) // returns 'test'

    return [
        $partner->full_name, // this returns correctly.
        $credit->name, // returns "Trying to get property 'name' of non-object"
                       // if use $credit, it returns whole credit object.
        $debit->name,  // returns "Trying to get property 'name' of non-object"
                       // if use $credit, it returns whole debit object.
    ];
}

标签: laravel

解决方案


看起来很少$partner有没有creditdebit检查空条件

public function map($partner): array
{
    $credit = Bank::whereId($partner->credit)->first(); Bank::find($partner->credit);
    $debit = Bank::whereId($partner->debit)->first();
   

    return [
        $partner->full_name, 
        $credit->name??null,
        $debit->name??null,          
    ];
}

你也可以做

$data=[$partner->full_name];
isset($credit->name)? array_push($data,$credit->name)?null;
isset($debit->name)? array_push($data,$debit->name)?null;
  
return $data;

推荐阅读