【问题标题】:Laravel 5.3 Eloquent Column not found未找到 Laravel 5.3 Eloquent 列
【发布时间】:2017-05-10 13:40:27
【问题描述】:

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

找不到列:1054 '字段列表'中的未知列'地址'(SQL:插入invoicesaddressinvoiceuser_idupdated_atcreated_at)值(3 , 2, 1, 2016-12-25 23:34:44, 2016-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)

我发现:将 Invoice-model 中的地址函数更改为 address_id() 解决了这个问题,但是如果我正确理解了关系并且接下来发生的事情是我得到相同的错误,但现在使用“发票”字段,此时我怀疑关系定义不正确。感谢您的帮助。

【问题讨论】:

  • 该错误表明您的数据库中没有地址字段。检查数据库以查看表 invoices 中是否存在列地址。
  • 表格与上面发布的完全相同。 Invoice-table 有一个 address_id 字段,这对于我想要实现的目标应该是正确的吗?

标签: laravel laravel-5 eloquent laravel-5.3


【解决方案1】:

预计会出错,因为您存储的是地址而不是 address_id,我曾解决过同样的问题,这就是我的做法。

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

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

【讨论】:

  • 变量$address_data从何而来?
  • 仅供参考,该数据只不过是您将插入地址表的数据。
【解决方案2】:

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

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

【讨论】:

  • 我确实尝试过,正如我在雄辩的文档中看到的那样,但它对我不起作用,因为我仍然遇到相同的错误。
猜你喜欢
  • 2020-03-05
  • 2017-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 2017-05-10
相关资源
最近更新 更多