未找到Laravel 5.3 Eloquent Column

时间:2016-12-25 23:50:46

标签: laravel laravel-5 eloquent laravel-5.3

我一直在理解这一天雄辩的关系,现在我决定在这里发布我的问题。我在尝试保存数据库中的条目时遇到错误。

  

找不到列:1054'字段列表'中的未知列'地址'(SQL:插入authenticatedinvoicesaddressinvoice,{{1 },user_id)值(3,2,1,2016-12-25 23:34:44,2016-12-25 23:34:44))

InvoiceController

updated_at

用户模型

created_at

地址模型

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

我想做的是:

  1. 用户可以拥有多张发票
  2. 用户可以拥有多个地址(客户地址)
  3. 发票为一个地址分配了一个address_id(来自地址表的ID)
  4. 我发现:将Invoice-model中的地址功能更改为 address_id()解决了这个问题,但如果我理解正确的关系,接下来会发生什么,那就不需要了得到相同的错误,但现在使用“发票”字段,此时我怀疑定义不明确的关系。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

错误是预期的,因为你存储的地址不是address_id,我曾经解决过同样的问题,这就是我做的方式。

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

现在您要在发票表中存储对地址的引用。

答案 1 :(得分:0)

您可以像这样传递外键字段:

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