Laravel -未定义的索引


Laravel - Undefined index

我要做的是同时添加一个费用和一个供应商,知道费用表和供应商表之间的关系是一对多的关系。供应商可以有vendor_contacts,这是一个与供应商表有一对多关系的表。

这是我的代码:

if (isset($data['vendor'])) {
            $canSaveVendor = false;
            $vendorPublicId = array_get($data, 'vendor.public_id') ?: array_get($data, 'vendor.id');
            if (empty($vendorPublicId) || $vendorPublicId == '-1') {
                $canSaveVendor = Auth::user()->can('create', ENTITY_VENDOR);
            } else {
                $vendor = Vendor::scope($vendorPublicId)->first();
            }
            if ($canSaveVendor) {
                $vendor = $this->vendorRepo->save($data['vendor']);
            }
            if ($canSaveVendor) {
                $data['vendor_id'] = $vendor->id;
            }
        }
        $expense = $this->expenseRepo->save($data, $expense);
        $vendor = $expense->vendor;
        $vendor->load('vendor_contacts');
        return $expense; 

这是当我们想要保存一个供应商时执行的代码:

if ($vendor) {
            // do nothing
        } elseif (!$publicId || $publicId == '-1') {
            $vendor = Vendor::createNew();
        } else {
            $vendor = Vendor::scope($publicId)->with('vendor_contacts')->firstOrFail();
            'Log::warning('Entity not set in vendor repo save');
        }
        $vendor->fill($data);
        $vendor->save();
        $first              = true;
        $vendorcontacts     = isset($data['vendor_contact']) ? [$data['vendor_contact']] : $data['vendor_contacts'];
        foreach ($vendorcontacts as $vendorcontact) {
            $vendorcontact      = $vendor->addVendorContact($vendorcontact, $first);
            $first              = false;
        }

当我尝试保存它时,它正确地保存了供应商在供应商表中,但既没有费用也没有vendor_contacts得到Undefined index: vendor_contacts我该怎么办呢?

你犯了个错误:

$vendorcontacts = isset($data['vendor_contact']) 
    ? [$data['vendor_contact']] 
    : $data['vendor_contacts'];

试试:

$vendorcontacts = isset($data['vendor_contact']) 
    ? [$data['vendor_contact']] 
    : [];