2016-12-25 97 views
1

我一直在努力理解這整天的雄辯關係,現在我決定在這裏發表我的問題。嘗試保存數據庫中的條目時出現錯誤。Laravel 5.3雄辯柱未找到

柱未找到:1054未知列在 '字段列表' '地址'(SQL:插入invoicesaddressinvoiceuser_idupdated_atcreated_at)值(3,2,1,2016-12- 25 23點34分44秒,2016年12月25日23時34分44秒))

InvoiceController

public function postInvoiceDetails(Request $request) 
{ 
    $invoice = new Invoice(); 
    $invoice->address = $request['customer-address']; 
    $invoice->invoice = $request['invoice-number']; 
    $request->user()->invoices()->save($invoice); 
} 

用戶模式

public function addresses() 
{ 
    return $this->hasMany('App\Address'); 
} 

public function invoices() 
{ 
    return $this->hasMany('App\Invoice'); 
} 

地址模型

public function user() 
{ 
    return $this->belongsTo('App\User'); 
} 

發票模型

public function user() 
{ 
    return $this->belongsTo('App\User'); 
} 

public function address() 
{ 
    return $this->hasOne('App\Address'); 
} 

發票表

$table->increments('id'); 
$table->integer('user_id'); 
$table->integer('address_id'); 
$table->integer('invoice_number'); 
$table->timestamps(); 

地址表

$table->increments('id'); 
$table->integer('user_id'); 
$table->text('address'); 
$table->timestamps(); 

什麼,我試圖做的是:

  1. 的用戶可以有多個發票
  2. 用戶可以有多個地址(客戶地址)
  3. 發票有一個地址分配了一個address_id(來自地址表的id)

我發現了什麼:在發票模型更改地址功能ADDRESS_ID()解決了這個問題,但是如果我理解正確的關係,接下來發生的事情是,我得到同樣的,這不應該需要錯誤,但現在與「發票」字段,在這一點上,我懷疑定義不清的關係。謝謝你的幫助。

+0

該錯誤表示數據庫中沒有地址字段。檢查數據庫以查看錶格發票中是否存在列地址。 –

+0

表格和上面一樣。發票表有一個address_id字段,這應該是正確的,我想要實現的權利? – Laravelnoobie

回答

0

您可以通過外鍵字段是這樣的:

return $this->hasOne('App\Address', 'address_id'); 
+0

我確實嘗試過,因爲我在雄辯的文檔中看到它,但它不適用於我,因爲我仍然得到相同的相同錯誤。 – Laravelnoobie

1

錯誤的預期,因爲要存儲的地址不是ADDRESS_ID,我已經上了同樣的問題曾在這裏爲我做的方式。

$address = Address::create($address_data); 
$invoice_data['address_id'] = $address->id; 

現在您正在存儲發票表中的地址引用。

+0

變量$ address_data來自哪裏? –

+0

多數民衆贊成參考,該數據只是你將插入地址表中的數據。 –