提问者:小点点

Laravel 5.3雄辩的列未找到


这一天我一直在努力理解这段雄辩的关系,现在我决定把我的文章发到这里。尝试在数据库中保存条目时出错。

未找到列:1054“字段列表”中的未知列“地址”(SQL:插入发票地址发票用户id更新时间创建时间)值(3,2,12016-12-25 23:34:442016-12-25 23:34:44))

发票控制员

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()解决了这个问题,但是如果我正确地理解关系,就不需要这样做,接下来发生的是,我得到了同样的错误,但是现在有了发票字段,在这一点上我怀疑关系定义不好。感谢任何帮助。


共2个答案

匿名用户

错误是意料之中的,因为您存储的是地址而不是地址id,所以我处理过同一个问题,下面是我处理该问题的方法。

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

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

匿名用户

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

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