2016-09-07 2 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; 
     } 

, когда я пытаюсь сохранить правильное сохранение файла поставщика в таблице продавцов, но ни расход нет, ни продавец 0contacts , и он дает мне 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

yes, если у вас нет данных –

+0

, но я хочу добавить данные для vendor_contacts – eya

Смежные вопросы