Laravel 5.2 Model User-> Invoice-> InvoiceDetails

时间:2016-05-20 15:25:08

标签: php relationship laravel-5.2

我有3个模型,我不知道我需要为每个模型编写哪种关系

用户|发票| InvoiceDetails

用户可以拥有多个发票,只有一个用户可以发出一个发票。 所以在用户类我写道:

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

并在Invoice Class里面写道:

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

这是正确的吗?

现在,一个Invoice有一个InvoiceDetail,这意味着每个Invoice中只有一行表invoice_details?

我只是不知道在每个模型中写什么,如何连接它们? 我做了一个小模式只是为了表明它应该是什么样的: enter image description here

所以问题是,在每个模型中写入哪些函数来声明它们之间的正确连接?

1 个答案:

答案 0 :(得分:2)

到目前为止您所写的内容很好,它可以正确地将用户与发票联系起来(差不多)。您唯一需要将owner_id重命名为user_id,或指定它应使用owner_id字段。

用户类

// Note that the function should be plural as it's for many
public function invoices(){
    return $this->hasMany('App\Invoice', 'owner_id', 'ID');
}

发票类

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

然后你只需要定义与InvoiceDetails的关系

发票类

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

InvoiceDetails类

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