未找到Laravel 5.3雄辩专栏

未找到Laravel 5.3雄辩专栏,laravel,laravel-5,eloquent,laravel-5.3,Laravel,Laravel 5,Eloquent,Laravel 5.3,这一天我一直在努力理解这段雄辩的关系,现在我决定把我的文章发到这里。尝试在数据库中保存条目时出错 未找到列:1054“字段列表”中的未知列“地址”(SQL:插入发票(地址,发票,用户id,更新时间,创建时间)值(3,2,12016-12-25 23:34:442016-12-25 23:34:44)) InvoiceController public function postInvoiceDetails(Request $request) { $invoice = new Invoic

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

未找到列:1054“字段列表”中的未知列“地址”(SQL:插入
发票
地址
发票
用户id
更新时间
创建时间
)值(3,2,12016-12-25 23:34:442016-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');
}
地址模型

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');
}
发票型号

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();
地址表

$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();
我想做的是:

  • 一个用户可以有许多发票
  • 用户可以有多个地址(客户地址)
  • 发票有一个地址,分配一个地址\u id(地址表中的id)

  • 我发现:将发票模型中的address函数更改为address_id()解决了这个问题,但是如果我正确理解了关系,则不需要这样做,接下来发生的是,我得到了相同的错误,但现在是“Invoice”字段,此时我怀疑关系定义不正确。谢谢您的帮助。

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

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

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

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

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

    正如我在雄辩的文档中看到的那样,我确实尝试过,但是它对我不起作用,因为我仍然会遇到相同的错误。该错误表明您的数据库中没有地址字段。检查数据库,查看表invoices中是否存在列地址。表与上面发布的完全相同。发票表有一个address_id字段,该字段应该与我试图实现的是正确的,对吗?变量$address_数据来自何处?仅供参考,该数据只是您将插入到address表中的数据。