2016-09-07 48 views
3

我想要做的是在知道费用表和供应商表之间的关系是一对多关系的同时添加费用和供应商.. 供应商可以有vendor_contacts哪个是有一个与供应商表中的许多关系的表..Laravel - 未定义索引

这是我的代码:

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; 
     } 

当我尝试在供应商表中正确保存供应商的供应商时,但既没有支出,也没有供应商供应商联系 ,它给了我Undefined index: vendor_contacts 我该怎么做?

+0

什么是'Vendor'模型类的关系方法的名称?它调用:'vendor_contacts()'或'vendorContacts'? –

+0

它调用了vendor_contacts() – eya

回答

1

您在这里犯的错误:

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

尝试这样的:

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

不起作用,它不保存vendor_contact – eya

+0

是的,如果你没有任何数据在里面 –

+0

但我想为vendor_contacts添加数据 – eya